diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2021-03-17 02:34:50 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-17 10:34:50 +0800 |
commit | 9fc0ff5953ffaebffa179284f82bbb01fb9ada3e (patch) | |
tree | 98eeac28585ad5f963375386898fcf8e3b8e6e17 | |
parent | 997d09bb33f95cf414235b8fc3d3b0539d33d2a2 (diff) | |
download | tracifyjs-9fc0ff5953ffaebffa179284f82bbb01fb9ada3e.tar.gz tracifyjs-9fc0ff5953ffaebffa179284f82bbb01fb9ada3e.zip |
parse extended Unicode literal correctly (#4792)
-rw-r--r-- | lib/parse.js | 6 | ||||
-rw-r--r-- | test/compress/unicode.js | 13 |
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, |