parser: fix `(x mut &X)`

pull/4180/head
Alexander Medvednikov 2020-04-01 23:56:55 +02:00
parent c6cf8ace22
commit 91ffeeb73b
2 changed files with 7 additions and 7 deletions

View File

@ -29,7 +29,7 @@ pub fn (p mut Parser) call_expr(is_c bool, mod string) ast.CallExpr {
name: fn_name
args: args
// tok: tok
pos: tok.position()
is_c: is_c
or_block: ast.OrExpr{
@ -188,7 +188,7 @@ fn (p mut Parser) fn_args() ([]table.Arg,bool) {
// `int, int, string` (no names, just types)
types_only := p.tok.kind in [.amp, .and] || (p.peek_tok.kind == .comma && p.table.known_type(p.tok.lit)) || p.peek_tok.kind == .rpar
if types_only {
// p.warn('types only')
//p.warn('types only')
mut arg_no := 1
for p.tok.kind != .rpar {
arg_name := 'arg_$arg_no'

View File

@ -93,8 +93,12 @@ pub fn (p mut Parser) parse_type() table.Type {
p.next()
is_optional = true
}
// &Type
mut nr_muls := 0
if p.tok.kind == .key_mut {
nr_muls++
p.next()
}
// &Type
for p.tok.kind in [.and, .amp] {
if p.tok.kind == .and {
nr_muls += 2
@ -104,10 +108,6 @@ pub fn (p mut Parser) parse_type() table.Type {
}
p.next()
}
if p.tok.kind == .key_mut {
nr_muls++
p.next()
}
is_c := p.tok.lit == 'C'
if is_c {
p.next()