parser: parse type - fix multiple &
parent
831be43740
commit
837bffd03a
|
@ -753,10 +753,10 @@ fn (g mut Gen) free_scope_vars(pos int) {
|
||||||
// println('//////')
|
// println('//////')
|
||||||
// println(var.name)
|
// println(var.name)
|
||||||
// println(var.typ)
|
// println(var.typ)
|
||||||
if var.typ == 0 {
|
// if var.typ == 0 {
|
||||||
// TODO why 0?
|
// // TODO why 0?
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
sym := g.table.get_type_symbol(var.typ)
|
sym := g.table.get_type_symbol(var.typ)
|
||||||
if sym.kind == .array && !table.type_is_optional(var.typ) {
|
if sym.kind == .array && !table.type_is_optional(var.typ) {
|
||||||
g.writeln('array_free($var.name); // autofreed')
|
g.writeln('array_free($var.name); // autofreed')
|
||||||
|
|
|
@ -94,10 +94,15 @@ pub fn (p mut Parser) parse_type() table.Type {
|
||||||
}
|
}
|
||||||
// &Type
|
// &Type
|
||||||
mut nr_muls := 0
|
mut nr_muls := 0
|
||||||
for p.tok.kind == .amp {
|
for p.tok.kind in [.and, .amp] {
|
||||||
p.check(.amp)
|
if p.tok.kind == .and {
|
||||||
|
nr_muls+=2
|
||||||
|
}
|
||||||
|
else {
|
||||||
nr_muls++
|
nr_muls++
|
||||||
}
|
}
|
||||||
|
p.next()
|
||||||
|
}
|
||||||
if p.tok.kind == .key_mut {
|
if p.tok.kind == .key_mut {
|
||||||
nr_muls++
|
nr_muls++
|
||||||
p.next()
|
p.next()
|
||||||
|
|
Loading…
Reference in New Issue