diff --git a/vlib/v/checker/str.v b/vlib/v/checker/str.v index 142a4e42e6b617..c9f52cc445da32 100644 --- a/vlib/v/checker/str.v +++ b/vlib/v/checker/str.v @@ -143,7 +143,10 @@ fn (mut c Checker) string_lit(mut node ast.StringLiteral) ast.Type { start_idx := idx idx++ next_ch := node.val[idx] or { return ast.string_type } - if next_ch == `u` { + if next_ch == `\\` { + // ignore escaping char + idx++ + } else if next_ch == `u` { idx++ mut ch := node.val[idx] or { return ast.string_type } mut hex_char_count := 0 diff --git a/vlib/v/tests/unicode_escape_test.v b/vlib/v/tests/unicode_escape_test.v new file mode 100644 index 00000000000000..033b5518965264 --- /dev/null +++ b/vlib/v/tests/unicode_escape_test.v @@ -0,0 +1,9 @@ +fn test_main() { + a := r'\u306aefgh\t' + + mut expected := '\\u306a' + expected += 'efgh\\t' + + assert a == expected + assert a == '\\u306aefgh\\t' +}