aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2021-03-17 02:34:50 +0000
committerGitHub <noreply@github.com>2021-03-17 10:34:50 +0800
commit9fc0ff5953ffaebffa179284f82bbb01fb9ada3e (patch)
tree98eeac28585ad5f963375386898fcf8e3b8e6e17
parent997d09bb33f95cf414235b8fc3d3b0539d33d2a2 (diff)
downloadtracifyjs-9fc0ff5953ffaebffa179284f82bbb01fb9ada3e.tar.gz
tracifyjs-9fc0ff5953ffaebffa179284f82bbb01fb9ada3e.zip
parse extended Unicode literal correctly (#4792)
-rw-r--r--lib/parse.js6
-rw-r--r--test/compress/unicode.js13
2 files changed, 15 insertions, 4 deletions
diff --git a/lib/parse.js b/lib/parse.js
index a7202ccb..b5abf0d7 100644
--- a/lib/parse.js
+++ b/lib/parse.js
@@ -161,10 +161,10 @@ function decode_escape_sequence(seq) {
case "t": return "\t";
case "u":
var code;
- if (seq.length == 5) {
- code = seq.slice(1);
- } else if (seq[1] == "{" && seq.slice(-1) == "}") {
+ if (seq[1] == "{" && seq.slice(-1) == "}") {
code = seq.slice(2, -1);
+ } else if (seq.length == 5) {
+ code = seq.slice(1);
} else {
return;
}
diff --git a/test/compress/unicode.js b/test/compress/unicode.js
index be86ccd8..b08b22a9 100644
--- a/test/compress/unicode.js
+++ b/test/compress/unicode.js
@@ -50,7 +50,7 @@ unicode_parse_variables: {
}
}
-unicode_escaped_identifier: {
+unicode_escaped_identifier_1: {
input: {
var \u0061 = "\ud800\udc00";
console.log(a);
@@ -59,6 +59,17 @@ unicode_escaped_identifier: {
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: {
beautify = {
ascii_only: true,