parse extended Unicode literal correctly (#4792)

This commit is contained in:
Alex Lam S.L
2021-03-17 02:34:50 +00:00
committed by GitHub
parent 997d09bb33
commit 9fc0ff5953
2 changed files with 15 additions and 4 deletions

View File

@@ -161,10 +161,10 @@ function decode_escape_sequence(seq) {
case "t": return "\t"; case "t": return "\t";
case "u": case "u":
var code; var code;
if (seq.length == 5) { if (seq[1] == "{" && seq.slice(-1) == "}") {
code = seq.slice(1);
} else if (seq[1] == "{" && seq.slice(-1) == "}") {
code = seq.slice(2, -1); code = seq.slice(2, -1);
} else if (seq.length == 5) {
code = seq.slice(1);
} else { } else {
return; return;
} }

View File

@@ -50,7 +50,7 @@ unicode_parse_variables: {
} }
} }
unicode_escaped_identifier: { unicode_escaped_identifier_1: {
input: { input: {
var \u0061 = "\ud800\udc00"; var \u0061 = "\ud800\udc00";
console.log(a); console.log(a);
@@ -59,6 +59,17 @@ unicode_escaped_identifier: {
expect_stdout: "\ud800\udc00" expect_stdout: "\ud800\udc00"
} }
unicode_escaped_identifier_2: {
input: {
var \u{61} = "foo";
var \u{10000} = "bar";
console.log(a, \u{10000});
}
expect_exact: 'var a="foo";var \u{10000}="bar";console.log(a,\u{10000});'
expect_stdout: "foo bar"
node_version: ">=4"
}
unicode_identifier_ascii_only: { unicode_identifier_ascii_only: {
beautify = { beautify = {
ascii_only: true, ascii_only: true,