From fb9db11a008dc701f864965923e5ba96c6d28039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20D=C3=A4schle?= Date: Sat, 12 Dec 2020 23:08:45 +0100 Subject: [PATCH] cgen: fix line number generation on match (#7292) --- vlib/v/gen/cgen.v | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index 6faf9ee222..68f95c21bf 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -3098,7 +3098,7 @@ fn (mut g Gen) match_expr(node ast.MatchExpr) { cond_var := g.new_tmp_var() g.write('${g.typ(node.cond_type)} $cond_var = ') g.expr(node.cond) - g.writeln(';') + g.writeln('; ') g.write(cur_line) if is_expr { // brackets needed otherwise '?' will apply to everything on the left @@ -3128,19 +3128,24 @@ fn (mut g Gen) match_expr_sumtype(node ast.MatchExpr, is_expr bool, cond_var str // TODO too many branches. maybe separate ?: matches g.write(' : ') } else { - g.writeln(' else {') + g.writeln('') + g.write_v_source_line_info(branch.pos) + g.writeln('else {') } } else { if j > 0 || sumtype_index > 0 { if is_expr { g.write(' : ') } else { - g.write(' else ') + g.writeln('') + g.write_v_source_line_info(branch.pos) + g.write('else ') } } if is_expr { g.write('(') } else { + g.write_v_source_line_info(branch.pos) g.write('if (') } g.write(cond_var) @@ -3184,7 +3189,9 @@ fn (mut g Gen) match_expr_classic(node ast.MatchExpr, is_expr bool, cond_var str // TODO too many branches. maybe separate ?: matches g.write(' : ') } else { - g.writeln(' else {') + g.writeln('') + g.write_v_source_line_info(branch.pos) + g.writeln('else {') } } } else { @@ -3192,12 +3199,15 @@ fn (mut g Gen) match_expr_classic(node ast.MatchExpr, is_expr bool, cond_var str if is_expr { g.write(' : ') } else { - g.write(' else ') + g.writeln('') + g.write_v_source_line_info(branch.pos) + g.write('else ') } } if is_expr { g.write('(') } else { + g.write_v_source_line_info(branch.pos) g.write('if (') } for i, expr in branch.exprs {