parse extended Unicode literal correctly (#4792)
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user