diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index 9ada6badb3..e6f7889eab 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -4480,6 +4480,7 @@ fn (mut g Gen) match_expr_switch(node ast.MatchExpr, is_expr bool, cond_var stri } g.writeln(') {') g.stmts_with_tmp_var(range_branch.stmts, tmp_var) + g.writeln('break;') g.writeln('}') } g.indent-- @@ -4543,6 +4544,7 @@ fn (mut g Gen) match_expr_switch(node ast.MatchExpr, is_expr bool, cond_var stri } g.writeln(') {') g.stmts_with_tmp_var(range_branch.stmts, tmp_var) + g.writeln('break;') g.writeln('}') } g.indent-- diff --git a/vlib/v/gen/c/testdata/enum_switch_case.out b/vlib/v/gen/c/testdata/enum_switch_case.out new file mode 100644 index 0000000000..11d2c888d1 --- /dev/null +++ b/vlib/v/gen/c/testdata/enum_switch_case.out @@ -0,0 +1 @@ +4..5 \ No newline at end of file diff --git a/vlib/v/gen/c/testdata/enum_switch_case.vv b/vlib/v/gen/c/testdata/enum_switch_case.vv index 29075c5390..364c7fc7d5 100644 --- a/vlib/v/gen/c/testdata/enum_switch_case.vv +++ b/vlib/v/gen/c/testdata/enum_switch_case.vv @@ -8,13 +8,17 @@ enum Enum { } fn main() { - e := Enum.e1 + e := Enum.e5 match e { .e1 {} .e2 {} .e3 {} .e4 {} - 4...5 {} - else {} + 4...5 { + println('4..5') + } + else { + println('else') + } } } diff --git a/vlib/v/gen/js/js.v b/vlib/v/gen/js/js.v index 705d64fb10..732d1dab04 100644 --- a/vlib/v/gen/js/js.v +++ b/vlib/v/gen/js/js.v @@ -2362,6 +2362,7 @@ fn (mut g JsGen) match_expr_switch(node ast.MatchExpr, is_expr bool, cond_var Ma } g.writeln(') {') g.stmts_with_tmp_var(range_branch.stmts, tmp_var) + g.writeln('break;') g.writeln('}') } g.dec_indent() @@ -2423,6 +2424,7 @@ fn (mut g JsGen) match_expr_switch(node ast.MatchExpr, is_expr bool, cond_var Ma } g.writeln(') {') g.stmts_with_tmp_var(range_branch.stmts, tmp_var) + g.writeln('break;') g.writeln('}') } g.dec_indent()