From 837bffd03aeef598a3253e59f70dcf277ff3ce85 Mon Sep 17 00:00:00 2001 From: joe-conigliaro Date: Sun, 29 Mar 2020 01:15:10 +1100 Subject: [PATCH] parser: parse type - fix multiple & --- vlib/v/gen/cgen.v | 8 ++++---- vlib/v/parser/parse_type.v | 11 ++++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index e3119b50d9..2f5c539377 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -753,10 +753,10 @@ fn (g mut Gen) free_scope_vars(pos int) { // println('//////') // println(var.name) // println(var.typ) - if var.typ == 0 { - // TODO why 0? - continue - } + // if var.typ == 0 { + // // TODO why 0? + // continue + // } sym := g.table.get_type_symbol(var.typ) if sym.kind == .array && !table.type_is_optional(var.typ) { g.writeln('array_free($var.name); // autofreed') diff --git a/vlib/v/parser/parse_type.v b/vlib/v/parser/parse_type.v index ce5b7f1df4..8535b952f8 100644 --- a/vlib/v/parser/parse_type.v +++ b/vlib/v/parser/parse_type.v @@ -94,9 +94,14 @@ pub fn (p mut Parser) parse_type() table.Type { } // &Type mut nr_muls := 0 - for p.tok.kind == .amp { - p.check(.amp) - nr_muls++ + for p.tok.kind in [.and, .amp] { + if p.tok.kind == .and { + nr_muls+=2 + } + else { + nr_muls++ + } + p.next() } if p.tok.kind == .key_mut { nr_muls++