diff --git a/vlib/v/scanner/scanner.v b/vlib/v/scanner/scanner.v index cd9fea070f..d19bb2e321 100644 --- a/vlib/v/scanner/scanner.v +++ b/vlib/v/scanner/scanner.v @@ -808,7 +808,7 @@ fn (mut s Scanner) text_scan() token.Token { } `{` { // Skip { in `${` in strings - if s.is_inside_string { + if s.is_inside_string || s.is_enclosed_inter { if s.text[s.pos - 1] == `$` { continue } else { diff --git a/vlib/v/tests/string_interpolation_match_expr_test.v b/vlib/v/tests/string_interpolation_match_expr_test.v new file mode 100644 index 0000000000..9f46dea157 --- /dev/null +++ b/vlib/v/tests/string_interpolation_match_expr_test.v @@ -0,0 +1,15 @@ +fn test_string_interpolation_match_expr() { + x := 0 + + println('Hello ${match x { + 0 { 'John' } + 1 { 'George' } + else { 'Others' } + }}') + + assert '${match x { + 0 { 'John' } + 1 { 'George' } + else { 'Others' } + }}' == 'John' +}