Allow braced \u escapes in identifiers
We still can't properly recognize code points as ES6-style identifier chars. Issue #214
This commit is contained in:
12
acorn.js
12
acorn.js
@@ -1245,15 +1245,15 @@
|
||||
} else if (ch === 92) { // "\"
|
||||
containsEsc = true;
|
||||
word += input.slice(chunkStart, tokPos);
|
||||
var escStart = tokPos;
|
||||
if (input.charCodeAt(++tokPos) != 117) // "u"
|
||||
raise(tokPos, "Expecting Unicode escape sequence \\uXXXX");
|
||||
++tokPos;
|
||||
var esc = readHexChar(4);
|
||||
var escStr = String.fromCharCode(esc);
|
||||
if (!escStr) raise(tokPos - 1, "Invalid Unicode escape");
|
||||
if (!(first ? isIdentifierStart(esc) : isIdentifierChar(esc)))
|
||||
raise(tokPos - 4, "Invalid Unicode escape");
|
||||
word += escStr;
|
||||
var esc = readCodePoint();
|
||||
if (esc.length != 1 ||
|
||||
!(first ? isIdentifierStart : isIdentifierChar)(esc.charCodeAt(0)))
|
||||
raise(escStart, "Invalid Unicode escape");
|
||||
word += esc;
|
||||
chunkStart = tokPos;
|
||||
} else {
|
||||
break;
|
||||
|
||||
@@ -26869,10 +26869,10 @@ testFail("x\\",
|
||||
"Expecting Unicode escape sequence \\uXXXX (1:2)");
|
||||
|
||||
testFail("x\\u005c",
|
||||
"Invalid Unicode escape (1:3)");
|
||||
"Invalid Unicode escape (1:1)");
|
||||
|
||||
testFail("x\\u002a",
|
||||
"Invalid Unicode escape (1:3)");
|
||||
"Invalid Unicode escape (1:1)");
|
||||
|
||||
testFail("/",
|
||||
"Unterminated regular expression (1:1)");
|
||||
@@ -27150,13 +27150,13 @@ testFail("\\\\",
|
||||
"Expecting Unicode escape sequence \\uXXXX (1:1)");
|
||||
|
||||
testFail("\\u005c",
|
||||
"Invalid Unicode escape (1:2)");
|
||||
"Invalid Unicode escape (1:0)");
|
||||
|
||||
testFail("\\x",
|
||||
"Expecting Unicode escape sequence \\uXXXX (1:1)");
|
||||
|
||||
testFail("\\u0000",
|
||||
"Invalid Unicode escape (1:2)");
|
||||
"Invalid Unicode escape (1:0)");
|
||||
|
||||
testFail(" = []",
|
||||
"Unexpected character '' (1:0)");
|
||||
|
||||
Reference in New Issue
Block a user