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:
Marijn Haverbeke
2015-03-04 15:37:26 +01:00
parent 59dc29f3f0
commit 891d5d07dd
2 changed files with 10 additions and 10 deletions

View File

@@ -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;

View File

@@ -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)");