From 2be0777c9864faf3d19e95a2e3568acf425d930a Mon Sep 17 00:00:00 2001 From: teggot Date: Fri, 23 Aug 2019 23:50:13 +0300 Subject: [PATCH] Fix issue of missing code in C --- compiler/parser.v | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/compiler/parser.v b/compiler/parser.v index b57fbd149b..8227f1c4a5 100644 --- a/compiler/parser.v +++ b/compiler/parser.v @@ -2052,8 +2052,14 @@ fn (p mut Parser) index_expr(typ_ string, fn_ph int) string { // Erase var name we generated earlier: "int a = m, 0" // "m, 0" gets killed since we need to start from scratch. It's messy. // "m, 0" is an index expression, save it before deleting and insert later in map_get() - index_expr := p.cgen.cur_line.right(fn_ph) - p.cgen.resetln(p.cgen.cur_line.left(fn_ph)) + mut index_expr := '' + if p.cgen.is_tmp { + index_expr = p.cgen.tmp_line.right(fn_ph) + p.cgen.resetln(p.cgen.tmp_line.left(fn_ph)) + } else { + index_expr = p.cgen.cur_line.right(fn_ph) + p.cgen.resetln(p.cgen.cur_line.left(fn_ph)) + } // Can't pass integer literal, because map_get() requires a void* tmp := p.get_tmp() tmp_ok := p.get_tmp()