diff --git a/vlib/v/scanner/scanner.v b/vlib/v/scanner/scanner.v index 5d0a0aaca0..8bdbbd4535 100644 --- a/vlib/v/scanner/scanner.v +++ b/vlib/v/scanner/scanner.v @@ -811,7 +811,7 @@ fn (mut s Scanner) text_scan() token.Token { next_char := s.text[s.pos + 1] // Handle new `hello {name}` string interpolation if !s.is_inside_interpolation && !next_char.is_space() && next_char != `}` - && prev_char !in [`$`, `{`] { + && prev_char != `$` { s.is_inside_interpolation = true return s.new_token(.str_lcbr, '', 1) } diff --git a/vlib/v/tests/string_new_interpolation_test.v b/vlib/v/tests/string_new_interpolation_test.v index 418e15ad05..dcd43bd5df 100644 --- a/vlib/v/tests/string_new_interpolation_test.v +++ b/vlib/v/tests/string_new_interpolation_test.v @@ -6,4 +6,13 @@ fn test_string_new_interpolation() { println('{a} {b} {c} {d}') assert '{a} {b} {c} {d}' == '1 2 3 4' + + println('{a}{{b}}') + assert '{a}{{b}}' == '1{2}' + + println('{a}\{{b}}') + assert '{a}\{{b}}' == '1{2}' + + println('{a}{{{{{b}}}}}') + assert '{a}{{{{{b}}}}}' == '1{{{{2}}}}' }