diff --git a/acorn.js b/acorn.js index 556ab0e5cb..9c08ae9692 100644 --- a/acorn.js +++ b/acorn.js @@ -872,9 +872,9 @@ if (ch === 123) { if (options.ecmaVersion < 6) unexpected(); ++tokPos; - code = readHexChar(); - ch = input.charCodeAt(tokPos++); - if (code > 0x10FFFF || ch !== 125 /* '}' */) unexpected(); + code = readHexChar(input.indexOf('}', tokPos) - tokPos); + ++tokPos; + if (code > 0x10FFFF) unexpected(); } else { code = readHexChar(4); } diff --git a/test/tests-harmony.js b/test/tests-harmony.js index 95905f1fbf..cbab6dc117 100644 --- a/test/tests-harmony.js +++ b/test/tests-harmony.js @@ -15751,13 +15751,13 @@ testFail("0B18", "Unexpected token (1:3)", {ecmaVersion: 6}); testFail("0B12", "Unexpected token (1:3)", {ecmaVersion: 6}); -testFail("\"\\u{110000}\"", "Unexpected token (1:12)", {ecmaVersion: 6}); +testFail("\"\\u{110000}\"", "Unexpected token (1:0)", {ecmaVersion: 6}); -testFail("\"\\u{}\"", "Unexpected token (1:5)", {ecmaVersion: 6}); +testFail("\"\\u{}\"", "Bad character escape sequence (1:0)", {ecmaVersion: 6}); -testFail("\"\\u{FFFF\"", "Unexpected token (1:10)", {ecmaVersion: 6}); +testFail("\"\\u{FFFF\"", "Bad character escape sequence (1:0)", {ecmaVersion: 6}); -testFail("\"\\u{FFZ}\"", "Unexpected token (1:8)", {ecmaVersion: 6}); +testFail("\"\\u{FFZ}\"", "Bad character escape sequence (1:0)", {ecmaVersion: 6}); testFail("[v] += ary", "Unexpected token (1:4)", {ecmaVersion: 6});