Changeset 270481 in webkit


Ignore:
Timestamp:
Dec 6, 2020 12:41:11 AM (3 years ago)
Author:
ysuzuki@apple.com
Message:

[JSC] Accept escaped keywords for class and object property names
https://bugs.webkit.org/show_bug.cgi?id=219575

Reviewed by Alexey Shvayka.

JSTests:

  • stress/syntax-error-if-escaped-keyword-used-as-target-object-pattern.js: Added.

(testSyntaxError):

  • test262/expectations.yaml:

Source/JavaScriptCore:

In this patch, we accept escaped keywords for class, object, and object pattern property names.

var object = {

bre\u0061k: 42

};

When escaped keyword appears, we produce ESCAPED_KEYWORD with CanBeErrorTokenFlag. Now CanBeErrorTokenFlag
represents "when this token appears in an error condition, possibly this is error token and special message will appear",
instead of saying this token is definitely an error. So we can just use ESCAPED_KEYWORD token to handle this case.

  • parser/Lexer.cpp:

(JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
(JSC::Lexer<T>::lexWithoutClearingLineTerminator):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseDestructuringPattern):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::printUnexpectedTokenText):

  • parser/Parser.h:

(JSC::Parser<LexerType>::parse):

  • parser/ParserTokens.h:
Location:
trunk
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r270371 r270481  
     12020-12-05  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        [JSC] Accept escaped keywords for class and object property names
     4        https://bugs.webkit.org/show_bug.cgi?id=219575
     5
     6        Reviewed by Alexey Shvayka.
     7
     8        * stress/syntax-error-if-escaped-keyword-used-as-target-object-pattern.js: Added.
     9        (testSyntaxError):
     10        * test262/expectations.yaml:
     11
    1122020-12-02  Ross Kirsling  <ross.kirsling@sony.com>
    213
  • trunk/JSTests/stress/reserved-word-with-escape.js

    r231142 r270481  
    3434
    3535testSyntaxError(String.raw`var {var} = obj)`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    36 testSyntaxError(String.raw`var {v\u0061r} = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`);
    37 testSyntaxError(String.raw`var {v\u{0061}r} = obj`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`);
     36testSyntaxError(String.raw`var {v\u0061r} = obj`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
     37testSyntaxError(String.raw`var {v\u{0061}r} = obj`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    3838
    3939testSyntaxError(String.raw`var {var:var} = obj)`, String.raw`SyntaxError: Cannot use the keyword 'var' as a variable name.`);
     
    5858
    5959testSyntaxError(String.raw`function a({var}) { }`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    60 testSyntaxError(String.raw`function a({v\u0061r}) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`);
    61 testSyntaxError(String.raw`function a({v\u{0061}r}) { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`);
     60testSyntaxError(String.raw`function a({v\u0061r}) { }`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
     61testSyntaxError(String.raw`function a({v\u{0061}r}) { }`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    6262
    6363testSyntaxError(String.raw`function a({var:var}) { }`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`);
     
    7878
    7979testSyntaxError(String.raw`(function a({var}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    80 testSyntaxError(String.raw`(function a({v\u0061r}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`);
    81 testSyntaxError(String.raw`(function a({v\u{0061}r}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`);
     80testSyntaxError(String.raw`(function a({v\u0061r}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
     81testSyntaxError(String.raw`(function a({v\u{0061}r}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    8282
    8383testSyntaxError(String.raw`(function a({var:var}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`);
     
    9090
    9191testSyntaxError(String.raw`(function a([{var}]) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    92 testSyntaxError(String.raw`(function a([{v\u0061r}]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`);
    93 testSyntaxError(String.raw`(function a([{v\u{0061}r}]) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`);
     92testSyntaxError(String.raw`(function a([{v\u0061r}]) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
     93testSyntaxError(String.raw`(function a([{v\u{0061}r}]) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    9494
    9595testSyntaxError(String.raw`(function a([{var:var}]) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`);
     
    102102
    103103testSyntaxError(String.raw`(function a({ hello: {var}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    104 testSyntaxError(String.raw`(function a({ hello: {v\u0061r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`);
    105 testSyntaxError(String.raw`(function a({ hello: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`);
     104testSyntaxError(String.raw`(function a({ hello: {v\u0061r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
     105testSyntaxError(String.raw`(function a({ hello: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    106106
    107107testSyntaxError(String.raw`(function a({ hello: {var:var}}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`);
     
    114114
    115115testSyntaxError(String.raw`(function a({ 0: {var} }) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    116 testSyntaxError(String.raw`(function a({ 0: {v\u0061r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`);
    117 testSyntaxError(String.raw`(function a({ 0: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`);
     116testSyntaxError(String.raw`(function a({ 0: {v\u0061r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
     117testSyntaxError(String.raw`(function a({ 0: {v\u{0061}r}}) { })`, String.raw`SyntaxError: Cannot use abbreviated destructuring syntax for keyword 'var'.`);
    118118
    119119testSyntaxError(String.raw`(function a({ 0: {var:var}}) { })`, String.raw`SyntaxError: Cannot use the keyword 'var' as a parameter name.`);
     
    137137testSyntaxError(String.raw`class v\u{0061}r { }`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`);
    138138
    139 testSyntaxError(String.raw`({ v\u0061r: 'Cocoa' })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u0061r'`);
    140 testSyntaxError(String.raw`({ v\u{0061}r: 'Cocoa' })`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'v\u{0061}r'`);
     139testSyntax(String.raw`({ v\u0061r: 'Cocoa' })`);
     140testSyntax(String.raw`({ v\u{0061}r: 'Cocoa' })`);
    141141
    142142testSyntaxError(String.raw`{for(o i\u006E {}){}}`, String.raw`SyntaxError: Unexpected escaped characters in keyword token: 'i\u006E'`);
  • trunk/JSTests/test262/expectations.yaml

    r270371 r270481  
    15171517  default: 'Test262Error: Expected SameValue(«1», «0») to be true'
    15181518  strict mode: 'Test262Error: Expected SameValue(«1», «0») to be true'
    1519 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-break-escaped.js:
    1520   default: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    1521 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-case-escaped.js:
    1522   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    1523 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-catch-escaped.js:
    1524   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    1525 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-class-escaped.js:
    1526   default: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    1527 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-const-escaped.js:
    1528   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    1529 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-continue-escaped.js:
    1530   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    1531 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-debugger-escaped.js:
    1532   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    1533 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-default-escaped-ext.js:
    1534   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    1535 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-default-escaped.js:
    1536   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    1537 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-delete-escaped.js:
    1538   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    1539 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-do-escaped.js:
    1540   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    1541 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-else-escaped.js:
    1542   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    1543 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-enum-escaped.js:
    1544   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    1545 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-export-escaped.js:
    1546   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    1547 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-extends-escaped-ext.js:
    1548   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    1549 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-extends-escaped.js:
    1550   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    1551 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-finally-escaped.js:
    1552   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    1553 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-for-escaped.js:
    1554   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    1555 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-function-escaped.js:
    1556   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    1557 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-if-escaped.js:
    1558   default: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    1559 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-import-escaped.js:
    1560   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    1561 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-in-escaped.js:
    1562   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    1563 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-instanceof-escaped.js:
    1564   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    1565 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-let-escaped.js:
    1566   default: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    1567 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-new-escaped.js:
    1568   default: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    1569 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-return-escaped.js:
    1570   default: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    1571 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-super-escaped.js:
    1572   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    1573 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-switch-escaped.js:
    1574   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    1575 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-this-escaped.js:
    1576   default: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    1577 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-throw-escaped.js:
    1578   default: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    1579 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-try-escaped.js:
    1580   default: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    1581 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-typeof-escaped.js:
    1582   default: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    1583 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-var-escaped.js:
    1584   default: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    1585 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-void-escaped.js:
    1586   default: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    1587 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-while-escaped.js:
    1588   default: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    1589 test/language/expressions/assignment/dstr/ident-name-prop-name-literal-with-escaped.js:
    1590   default: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    15911519test/language/expressions/assignment/fn-name-lhs-cover.js:
    15921520  default: 'Test262Error: descriptor value should be '
     
    16821610test/language/expressions/class/gen-method/forbidden-ext/b2/cls-expr-gen-meth-forbidden-ext-indirect-access-prop-caller.js:
    16831611  default: 'TypeError: Function.caller used to retrieve generator body'
    1684 test/language/expressions/class/ident-name-method-def-break-escaped.js:
    1685   default: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    1686   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    1687 test/language/expressions/class/ident-name-method-def-case-escaped.js:
    1688   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    1689   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    1690 test/language/expressions/class/ident-name-method-def-catch-escaped.js:
    1691   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    1692   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    1693 test/language/expressions/class/ident-name-method-def-class-escaped.js:
    1694   default: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    1695   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    1696 test/language/expressions/class/ident-name-method-def-const-escaped.js:
    1697   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    1698   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    1699 test/language/expressions/class/ident-name-method-def-continue-escaped.js:
    1700   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    1701   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    1702 test/language/expressions/class/ident-name-method-def-debugger-escaped.js:
    1703   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    1704   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    1705 test/language/expressions/class/ident-name-method-def-default-escaped-ext.js:
    1706   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    1707   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    1708 test/language/expressions/class/ident-name-method-def-default-escaped.js:
    1709   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    1710   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    1711 test/language/expressions/class/ident-name-method-def-delete-escaped.js:
    1712   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    1713   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    1714 test/language/expressions/class/ident-name-method-def-do-escaped.js:
    1715   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    1716   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    1717 test/language/expressions/class/ident-name-method-def-else-escaped.js:
    1718   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    1719   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    1720 test/language/expressions/class/ident-name-method-def-enum-escaped.js:
    1721   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    1722   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    1723 test/language/expressions/class/ident-name-method-def-export-escaped.js:
    1724   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    1725   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    1726 test/language/expressions/class/ident-name-method-def-extends-escaped-ext.js:
    1727   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    1728   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    1729 test/language/expressions/class/ident-name-method-def-extends-escaped.js:
    1730   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    1731   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    1732 test/language/expressions/class/ident-name-method-def-finally-escaped.js:
    1733   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    1734   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    1735 test/language/expressions/class/ident-name-method-def-for-escaped.js:
    1736   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    1737   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    1738 test/language/expressions/class/ident-name-method-def-function-escaped.js:
    1739   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    1740   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    1741 test/language/expressions/class/ident-name-method-def-if-escaped.js:
    1742   default: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    1743   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    1744 test/language/expressions/class/ident-name-method-def-implements-escaped.js:
    1745   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mplements'"
    1746   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mplements'"
    1747 test/language/expressions/class/ident-name-method-def-import-escaped.js:
    1748   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    1749   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    1750 test/language/expressions/class/ident-name-method-def-in-escaped.js:
    1751   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    1752   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    1753 test/language/expressions/class/ident-name-method-def-instanceof-escaped.js:
    1754   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    1755   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    1756 test/language/expressions/class/ident-name-method-def-interface-escaped.js:
    1757   default: "SyntaxError: Unexpected escaped characters in keyword token: 'interf\\u0061ce'"
    1758   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'interf\\u0061ce'"
    1759 test/language/expressions/class/ident-name-method-def-let-escaped.js:
    1760   default: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    1761   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    1762 test/language/expressions/class/ident-name-method-def-new-escaped.js:
    1763   default: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    1764   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    1765 test/language/expressions/class/ident-name-method-def-package-escaped.js:
    1766   default: "SyntaxError: Unexpected escaped characters in keyword token: 'p\\u0061ckage'"
    1767   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'p\\u0061ckage'"
    1768 test/language/expressions/class/ident-name-method-def-private-escaped.js:
    1769   default: "SyntaxError: Unexpected escaped characters in keyword token: 'privat\\u0065'"
    1770   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'privat\\u0065'"
    1771 test/language/expressions/class/ident-name-method-def-protected-escaped.js:
    1772   default: "SyntaxError: Unexpected escaped characters in keyword token: 'prot\\u0065cted'"
    1773   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'prot\\u0065cted'"
    1774 test/language/expressions/class/ident-name-method-def-public-escaped.js:
    1775   default: "SyntaxError: Unexpected escaped characters in keyword token: 'pu\\u0062lic'"
    1776   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'pu\\u0062lic'"
    1777 test/language/expressions/class/ident-name-method-def-return-escaped.js:
    1778   default: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    1779   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    1780 test/language/expressions/class/ident-name-method-def-static-escaped.js:
    1781   default: "SyntaxError: Unexpected escaped characters in keyword token: 'st\\u0061tic'"
    1782   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'st\\u0061tic'"
    1783 test/language/expressions/class/ident-name-method-def-super-escaped.js:
    1784   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    1785   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    1786 test/language/expressions/class/ident-name-method-def-switch-escaped.js:
    1787   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    1788   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    1789 test/language/expressions/class/ident-name-method-def-this-escaped.js:
    1790   default: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    1791   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    1792 test/language/expressions/class/ident-name-method-def-throw-escaped.js:
    1793   default: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    1794   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    1795 test/language/expressions/class/ident-name-method-def-try-escaped.js:
    1796   default: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    1797   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    1798 test/language/expressions/class/ident-name-method-def-typeof-escaped.js:
    1799   default: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    1800   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    1801 test/language/expressions/class/ident-name-method-def-var-escaped.js:
    1802   default: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    1803   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    1804 test/language/expressions/class/ident-name-method-def-void-escaped.js:
    1805   default: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    1806   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    1807 test/language/expressions/class/ident-name-method-def-while-escaped.js:
    1808   default: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    1809   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    1810 test/language/expressions/class/ident-name-method-def-with-escaped.js:
    1811   default: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    1812   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    18131612test/language/expressions/class/method-static/forbidden-ext/b2/cls-expr-meth-static-forbidden-ext-indirect-access-own-prop-caller-get.js:
    18141613  default: 'TypeError: Function.caller used to retrieve strict caller'
     
    19741773  default: 'Test262Error: production including Arguments Expected a TypeError but got a TypeError'
    19751774  strict mode: 'Test262Error: production including Arguments Expected a TypeError but got a TypeError'
    1976 test/language/expressions/object/covered-ident-name-prop-name-literal-break-escaped.js:
    1977   default: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    1978   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    1979 test/language/expressions/object/covered-ident-name-prop-name-literal-case-escaped.js:
    1980   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    1981   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    1982 test/language/expressions/object/covered-ident-name-prop-name-literal-catch-escaped.js:
    1983   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    1984   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    1985 test/language/expressions/object/covered-ident-name-prop-name-literal-class-escaped.js:
    1986   default: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    1987   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    1988 test/language/expressions/object/covered-ident-name-prop-name-literal-const-escaped.js:
    1989   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    1990   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    1991 test/language/expressions/object/covered-ident-name-prop-name-literal-continue-escaped.js:
    1992   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    1993   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    1994 test/language/expressions/object/covered-ident-name-prop-name-literal-debugger-escaped.js:
    1995   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    1996   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    1997 test/language/expressions/object/covered-ident-name-prop-name-literal-default-escaped-ext.js:
    1998   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    1999   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    2000 test/language/expressions/object/covered-ident-name-prop-name-literal-default-escaped.js:
    2001   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    2002   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    2003 test/language/expressions/object/covered-ident-name-prop-name-literal-delete-escaped.js:
    2004   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    2005   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    2006 test/language/expressions/object/covered-ident-name-prop-name-literal-do-escaped.js:
    2007   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    2008   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    2009 test/language/expressions/object/covered-ident-name-prop-name-literal-else-escaped.js:
    2010   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    2011   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    2012 test/language/expressions/object/covered-ident-name-prop-name-literal-enum-escaped.js:
    2013   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    2014   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    2015 test/language/expressions/object/covered-ident-name-prop-name-literal-export-escaped.js:
    2016   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    2017   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    2018 test/language/expressions/object/covered-ident-name-prop-name-literal-extends-escaped-ext.js:
    2019   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    2020   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    2021 test/language/expressions/object/covered-ident-name-prop-name-literal-extends-escaped.js:
    2022   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    2023   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    2024 test/language/expressions/object/covered-ident-name-prop-name-literal-finally-escaped.js:
    2025   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    2026   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    2027 test/language/expressions/object/covered-ident-name-prop-name-literal-for-escaped.js:
    2028   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    2029   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    2030 test/language/expressions/object/covered-ident-name-prop-name-literal-function-escaped.js:
    2031   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    2032   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    2033 test/language/expressions/object/covered-ident-name-prop-name-literal-if-escaped.js:
    2034   default: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    2035   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    2036 test/language/expressions/object/covered-ident-name-prop-name-literal-implements-escaped.js:
    2037   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mplements'"
    2038 test/language/expressions/object/covered-ident-name-prop-name-literal-import-escaped.js:
    2039   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    2040   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    2041 test/language/expressions/object/covered-ident-name-prop-name-literal-in-escaped.js:
    2042   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    2043   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    2044 test/language/expressions/object/covered-ident-name-prop-name-literal-instanceof-escaped.js:
    2045   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    2046   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    2047 test/language/expressions/object/covered-ident-name-prop-name-literal-interface-escaped.js:
    2048   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'interf\\u0061ce'"
    2049 test/language/expressions/object/covered-ident-name-prop-name-literal-let-escaped.js:
    2050   default: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    2051   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    2052 test/language/expressions/object/covered-ident-name-prop-name-literal-new-escaped.js:
    2053   default: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    2054   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    2055 test/language/expressions/object/covered-ident-name-prop-name-literal-package-escaped.js:
    2056   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'p\\u0061ckage'"
    2057 test/language/expressions/object/covered-ident-name-prop-name-literal-private-escaped.js:
    2058   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'privat\\u0065'"
    2059 test/language/expressions/object/covered-ident-name-prop-name-literal-protected-escaped.js:
    2060   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'prot\\u0065cted'"
    2061 test/language/expressions/object/covered-ident-name-prop-name-literal-public-escaped.js:
    2062   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'pu\\u0062lic'"
    2063 test/language/expressions/object/covered-ident-name-prop-name-literal-return-escaped.js:
    2064   default: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    2065   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    2066 test/language/expressions/object/covered-ident-name-prop-name-literal-static-escaped.js:
    2067   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'st\\u0061tic'"
    2068 test/language/expressions/object/covered-ident-name-prop-name-literal-super-escaped.js:
    2069   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    2070   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    2071 test/language/expressions/object/covered-ident-name-prop-name-literal-switch-escaped.js:
    2072   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    2073   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    2074 test/language/expressions/object/covered-ident-name-prop-name-literal-this-escaped.js:
    2075   default: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    2076   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    2077 test/language/expressions/object/covered-ident-name-prop-name-literal-throw-escaped.js:
    2078   default: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    2079   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    2080 test/language/expressions/object/covered-ident-name-prop-name-literal-try-escaped.js:
    2081   default: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    2082   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    2083 test/language/expressions/object/covered-ident-name-prop-name-literal-typeof-escaped.js:
    2084   default: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    2085   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    2086 test/language/expressions/object/covered-ident-name-prop-name-literal-var-escaped.js:
    2087   default: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    2088   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    2089 test/language/expressions/object/covered-ident-name-prop-name-literal-void-escaped.js:
    2090   default: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    2091   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    2092 test/language/expressions/object/covered-ident-name-prop-name-literal-while-escaped.js:
    2093   default: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    2094   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    2095 test/language/expressions/object/covered-ident-name-prop-name-literal-with-escaped.js:
    2096   default: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    2097   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    2098 test/language/expressions/object/ident-name-method-def-break-escaped.js:
    2099   default: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    2100   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    2101 test/language/expressions/object/ident-name-method-def-case-escaped.js:
    2102   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    2103   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    2104 test/language/expressions/object/ident-name-method-def-catch-escaped.js:
    2105   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    2106   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    2107 test/language/expressions/object/ident-name-method-def-class-escaped.js:
    2108   default: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    2109   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    2110 test/language/expressions/object/ident-name-method-def-const-escaped.js:
    2111   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    2112   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    2113 test/language/expressions/object/ident-name-method-def-continue-escaped.js:
    2114   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    2115   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    2116 test/language/expressions/object/ident-name-method-def-debugger-escaped.js:
    2117   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    2118   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    2119 test/language/expressions/object/ident-name-method-def-default-escaped-ext.js:
    2120   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    2121   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    2122 test/language/expressions/object/ident-name-method-def-default-escaped.js:
    2123   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    2124   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    2125 test/language/expressions/object/ident-name-method-def-delete-escaped.js:
    2126   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    2127   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    2128 test/language/expressions/object/ident-name-method-def-do-escaped.js:
    2129   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    2130   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    2131 test/language/expressions/object/ident-name-method-def-else-escaped.js:
    2132   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    2133   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    2134 test/language/expressions/object/ident-name-method-def-enum-escaped.js:
    2135   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    2136   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    2137 test/language/expressions/object/ident-name-method-def-export-escaped.js:
    2138   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    2139   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    2140 test/language/expressions/object/ident-name-method-def-extends-escaped-ext.js:
    2141   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    2142   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    2143 test/language/expressions/object/ident-name-method-def-extends-escaped.js:
    2144   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    2145   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    2146 test/language/expressions/object/ident-name-method-def-finally-escaped.js:
    2147   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    2148   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    2149 test/language/expressions/object/ident-name-method-def-for-escaped.js:
    2150   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    2151   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    2152 test/language/expressions/object/ident-name-method-def-function-escaped.js:
    2153   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    2154   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    2155 test/language/expressions/object/ident-name-method-def-if-escaped.js:
    2156   default: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    2157   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    2158 test/language/expressions/object/ident-name-method-def-implements-escaped.js:
    2159   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mplements'"
    2160 test/language/expressions/object/ident-name-method-def-import-escaped.js:
    2161   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    2162   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    2163 test/language/expressions/object/ident-name-method-def-in-escaped.js:
    2164   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    2165   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    2166 test/language/expressions/object/ident-name-method-def-instanceof-escaped.js:
    2167   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    2168   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    2169 test/language/expressions/object/ident-name-method-def-interface-escaped.js:
    2170   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'interf\\u0061ce'"
    2171 test/language/expressions/object/ident-name-method-def-let-escaped.js:
    2172   default: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    2173   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    2174 test/language/expressions/object/ident-name-method-def-new-escaped.js:
    2175   default: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    2176   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    2177 test/language/expressions/object/ident-name-method-def-package-escaped.js:
    2178   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'p\\u0061ckage'"
    2179 test/language/expressions/object/ident-name-method-def-private-escaped.js:
    2180   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'privat\\u0065'"
    2181 test/language/expressions/object/ident-name-method-def-protected-escaped.js:
    2182   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'prot\\u0065cted'"
    2183 test/language/expressions/object/ident-name-method-def-public-escaped.js:
    2184   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'pu\\u0062lic'"
    2185 test/language/expressions/object/ident-name-method-def-return-escaped.js:
    2186   default: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    2187   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    2188 test/language/expressions/object/ident-name-method-def-static-escaped.js:
    2189   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'st\\u0061tic'"
    2190 test/language/expressions/object/ident-name-method-def-super-escaped.js:
    2191   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    2192   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    2193 test/language/expressions/object/ident-name-method-def-switch-escaped.js:
    2194   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    2195   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    2196 test/language/expressions/object/ident-name-method-def-this-escaped.js:
    2197   default: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    2198   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    2199 test/language/expressions/object/ident-name-method-def-throw-escaped.js:
    2200   default: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    2201   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    2202 test/language/expressions/object/ident-name-method-def-try-escaped.js:
    2203   default: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    2204   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    2205 test/language/expressions/object/ident-name-method-def-typeof-escaped.js:
    2206   default: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    2207   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    2208 test/language/expressions/object/ident-name-method-def-var-escaped.js:
    2209   default: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    2210   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    2211 test/language/expressions/object/ident-name-method-def-void-escaped.js:
    2212   default: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    2213   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    2214 test/language/expressions/object/ident-name-method-def-while-escaped.js:
    2215   default: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    2216   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    2217 test/language/expressions/object/ident-name-method-def-with-escaped.js:
    2218   default: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    2219   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    2220 test/language/expressions/object/ident-name-prop-name-literal-break-escaped.js:
    2221   default: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    2222   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    2223 test/language/expressions/object/ident-name-prop-name-literal-case-escaped.js:
    2224   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    2225   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    2226 test/language/expressions/object/ident-name-prop-name-literal-catch-escaped.js:
    2227   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    2228   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    2229 test/language/expressions/object/ident-name-prop-name-literal-class-escaped.js:
    2230   default: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    2231   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    2232 test/language/expressions/object/ident-name-prop-name-literal-const-escaped.js:
    2233   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    2234   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    2235 test/language/expressions/object/ident-name-prop-name-literal-continue-escaped.js:
    2236   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    2237   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    2238 test/language/expressions/object/ident-name-prop-name-literal-debugger-escaped.js:
    2239   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    2240   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    2241 test/language/expressions/object/ident-name-prop-name-literal-default-escaped-ext.js:
    2242   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    2243   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    2244 test/language/expressions/object/ident-name-prop-name-literal-default-escaped.js:
    2245   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    2246   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    2247 test/language/expressions/object/ident-name-prop-name-literal-delete-escaped.js:
    2248   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    2249   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    2250 test/language/expressions/object/ident-name-prop-name-literal-do-escaped.js:
    2251   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    2252   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    2253 test/language/expressions/object/ident-name-prop-name-literal-else-escaped.js:
    2254   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    2255   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    2256 test/language/expressions/object/ident-name-prop-name-literal-enum-escaped.js:
    2257   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    2258   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    2259 test/language/expressions/object/ident-name-prop-name-literal-export-escaped.js:
    2260   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    2261   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    2262 test/language/expressions/object/ident-name-prop-name-literal-extends-escaped-ext.js:
    2263   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    2264   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    2265 test/language/expressions/object/ident-name-prop-name-literal-extends-escaped.js:
    2266   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    2267   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    2268 test/language/expressions/object/ident-name-prop-name-literal-finally-escaped.js:
    2269   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    2270   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    2271 test/language/expressions/object/ident-name-prop-name-literal-for-escaped.js:
    2272   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    2273   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    2274 test/language/expressions/object/ident-name-prop-name-literal-function-escaped.js:
    2275   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    2276   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    2277 test/language/expressions/object/ident-name-prop-name-literal-if-escaped.js:
    2278   default: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    2279   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    2280 test/language/expressions/object/ident-name-prop-name-literal-implements-escaped.js:
    2281   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mplements'"
    2282 test/language/expressions/object/ident-name-prop-name-literal-import-escaped.js:
    2283   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    2284   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    2285 test/language/expressions/object/ident-name-prop-name-literal-in-escaped.js:
    2286   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    2287   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    2288 test/language/expressions/object/ident-name-prop-name-literal-instanceof-escaped.js:
    2289   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    2290   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    2291 test/language/expressions/object/ident-name-prop-name-literal-interface-escaped.js:
    2292   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'interf\\u0061ce'"
    2293 test/language/expressions/object/ident-name-prop-name-literal-let-escaped.js:
    2294   default: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    2295   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    2296 test/language/expressions/object/ident-name-prop-name-literal-new-escaped.js:
    2297   default: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    2298   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    2299 test/language/expressions/object/ident-name-prop-name-literal-package-escaped.js:
    2300   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'p\\u0061ckage'"
    2301 test/language/expressions/object/ident-name-prop-name-literal-private-escaped.js:
    2302   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'privat\\u0065'"
    2303 test/language/expressions/object/ident-name-prop-name-literal-protected-escaped.js:
    2304   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'prot\\u0065cted'"
    2305 test/language/expressions/object/ident-name-prop-name-literal-public-escaped.js:
    2306   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'pu\\u0062lic'"
    2307 test/language/expressions/object/ident-name-prop-name-literal-return-escaped.js:
    2308   default: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    2309   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    2310 test/language/expressions/object/ident-name-prop-name-literal-static-escaped.js:
    2311   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'st\\u0061tic'"
    2312 test/language/expressions/object/ident-name-prop-name-literal-super-escaped.js:
    2313   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    2314   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    2315 test/language/expressions/object/ident-name-prop-name-literal-switch-escaped.js:
    2316   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    2317   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    2318 test/language/expressions/object/ident-name-prop-name-literal-this-escaped.js:
    2319   default: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    2320   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    2321 test/language/expressions/object/ident-name-prop-name-literal-throw-escaped.js:
    2322   default: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    2323   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    2324 test/language/expressions/object/ident-name-prop-name-literal-try-escaped.js:
    2325   default: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    2326   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    2327 test/language/expressions/object/ident-name-prop-name-literal-typeof-escaped.js:
    2328   default: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    2329   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    2330 test/language/expressions/object/ident-name-prop-name-literal-var-escaped.js:
    2331   default: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    2332   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    2333 test/language/expressions/object/ident-name-prop-name-literal-void-escaped.js:
    2334   default: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    2335   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    2336 test/language/expressions/object/ident-name-prop-name-literal-while-escaped.js:
    2337   default: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    2338   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    2339 test/language/expressions/object/ident-name-prop-name-literal-with-escaped.js:
    2340   default: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    2341   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    23421775test/language/expressions/object/method-definition/async-gen-meth-eval-var-scope-syntax-err.js:
    23431776  default: 'Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all'
     
    25141947test/language/statements/class/gen-method/forbidden-ext/b2/cls-decl-gen-meth-forbidden-ext-indirect-access-prop-caller.js:
    25151948  default: 'TypeError: Function.caller used to retrieve generator body'
    2516 test/language/statements/class/ident-name-method-def-break-escaped.js:
    2517   default: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    2518   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'bre\\u0061k'"
    2519 test/language/statements/class/ident-name-method-def-case-escaped.js:
    2520   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    2521   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061se'"
    2522 test/language/statements/class/ident-name-method-def-catch-escaped.js:
    2523   default: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    2524   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'c\\u0061tch'"
    2525 test/language/statements/class/ident-name-method-def-class-escaped.js:
    2526   default: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    2527   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'cl\\u0061ss'"
    2528 test/language/statements/class/ident-name-method-def-const-escaped.js:
    2529   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    2530   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063onst'"
    2531 test/language/statements/class/ident-name-method-def-continue-escaped.js:
    2532   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    2533   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0063ontinue'"
    2534 test/language/statements/class/ident-name-method-def-debugger-escaped.js:
    2535   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    2536   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064ebugger'"
    2537 test/language/statements/class/ident-name-method-def-default-escaped-ext.js:
    2538   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    2539   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u{61}ult'"
    2540 test/language/statements/class/ident-name-method-def-default-escaped.js:
    2541   default: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    2542   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'def\\u0061ult'"
    2543 test/language/statements/class/ident-name-method-def-delete-escaped.js:
    2544   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    2545   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064elete'"
    2546 test/language/statements/class/ident-name-method-def-do-escaped.js:
    2547   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    2548   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0064o'"
    2549 test/language/statements/class/ident-name-method-def-else-escaped.js:
    2550   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    2551   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065lse'"
    2552 test/language/statements/class/ident-name-method-def-enum-escaped.js:
    2553   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    2554   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065num'"
    2555 test/language/statements/class/ident-name-method-def-export-escaped.js:
    2556   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    2557   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xport'"
    2558 test/language/statements/class/ident-name-method-def-extends-escaped-ext.js:
    2559   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    2560   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u{65}xtends'"
    2561 test/language/statements/class/ident-name-method-def-extends-escaped.js:
    2562   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    2563   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0065xtends'"
    2564 test/language/statements/class/ident-name-method-def-finally-escaped.js:
    2565   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    2566   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066inally'"
    2567 test/language/statements/class/ident-name-method-def-for-escaped.js:
    2568   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    2569   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066or'"
    2570 test/language/statements/class/ident-name-method-def-function-escaped.js:
    2571   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    2572   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0066unction'"
    2573 test/language/statements/class/ident-name-method-def-if-escaped.js:
    2574   default: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    2575   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'i\\u0066'"
    2576 test/language/statements/class/ident-name-method-def-implements-escaped.js:
    2577   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mplements'"
    2578   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mplements'"
    2579 test/language/statements/class/ident-name-method-def-import-escaped.js:
    2580   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    2581   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069mport'"
    2582 test/language/statements/class/ident-name-method-def-in-escaped.js:
    2583   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    2584   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069n'"
    2585 test/language/statements/class/ident-name-method-def-instanceof-escaped.js:
    2586   default: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    2587   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: '\\u0069nstanceof'"
    2588 test/language/statements/class/ident-name-method-def-interface-escaped.js:
    2589   default: "SyntaxError: Unexpected escaped characters in keyword token: 'interf\\u0061ce'"
    2590   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'interf\\u0061ce'"
    2591 test/language/statements/class/ident-name-method-def-let-escaped.js:
    2592   default: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    2593   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'l\\u0065t'"
    2594 test/language/statements/class/ident-name-method-def-new-escaped.js:
    2595   default: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    2596   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'n\\u0065w'"
    2597 test/language/statements/class/ident-name-method-def-package-escaped.js:
    2598   default: "SyntaxError: Unexpected escaped characters in keyword token: 'p\\u0061ckage'"
    2599   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'p\\u0061ckage'"
    2600 test/language/statements/class/ident-name-method-def-private-escaped.js:
    2601   default: "SyntaxError: Unexpected escaped characters in keyword token: 'privat\\u0065'"
    2602   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'privat\\u0065'"
    2603 test/language/statements/class/ident-name-method-def-protected-escaped.js:
    2604   default: "SyntaxError: Unexpected escaped characters in keyword token: 'prot\\u0065cted'"
    2605   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'prot\\u0065cted'"
    2606 test/language/statements/class/ident-name-method-def-public-escaped.js:
    2607   default: "SyntaxError: Unexpected escaped characters in keyword token: 'pu\\u0062lic'"
    2608   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'pu\\u0062lic'"
    2609 test/language/statements/class/ident-name-method-def-return-escaped.js:
    2610   default: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    2611   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'r\\u0065turn'"
    2612 test/language/statements/class/ident-name-method-def-static-escaped.js:
    2613   default: "SyntaxError: Unexpected escaped characters in keyword token: 'st\\u0061tic'"
    2614   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'st\\u0061tic'"
    2615 test/language/statements/class/ident-name-method-def-super-escaped.js:
    2616   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    2617   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sup\\u0065r'"
    2618 test/language/statements/class/ident-name-method-def-switch-escaped.js:
    2619   default: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    2620   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'sw\\u0069tch'"
    2621 test/language/statements/class/ident-name-method-def-this-escaped.js:
    2622   default: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    2623   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'th\\u0069s'"
    2624 test/language/statements/class/ident-name-method-def-throw-escaped.js:
    2625   default: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    2626   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 't\\u0068row'"
    2627 test/language/statements/class/ident-name-method-def-try-escaped.js:
    2628   default: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    2629   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'tr\\u0079'"
    2630 test/language/statements/class/ident-name-method-def-typeof-escaped.js:
    2631   default: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    2632   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'typ\\u0065of'"
    2633 test/language/statements/class/ident-name-method-def-var-escaped.js:
    2634   default: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    2635   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'v\\u0061r'"
    2636 test/language/statements/class/ident-name-method-def-void-escaped.js:
    2637   default: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    2638   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'voi\\u0064'"
    2639 test/language/statements/class/ident-name-method-def-while-escaped.js:
    2640   default: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    2641   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'whil\\u0065'"
    2642 test/language/statements/class/ident-name-method-def-with-escaped.js:
    2643   default: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    2644   strict mode: "SyntaxError: Unexpected escaped characters in keyword token: 'w\\u0069th'"
    26451949test/language/statements/class/method-static/forbidden-ext/b2/cls-decl-meth-static-forbidden-ext-indirect-access-own-prop-caller-get.js:
    26461950  default: 'TypeError: Function.caller used to retrieve strict caller'
  • trunk/Source/JavaScriptCore/ChangeLog

    r270445 r270481  
     12020-12-05  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        [JSC] Accept escaped keywords for class and object property names
     4        https://bugs.webkit.org/show_bug.cgi?id=219575
     5
     6        Reviewed by Alexey Shvayka.
     7
     8        In this patch, we accept escaped keywords for class, object, and object pattern property names.
     9
     10            var object = {
     11                bre\u0061k: 42
     12            };
     13
     14        When escaped keyword appears, we produce ESCAPED_KEYWORD with CanBeErrorTokenFlag. Now CanBeErrorTokenFlag
     15        represents "when this token appears in an error condition, possibly this is error token and special message will appear",
     16        instead of saying this token is definitely an error. So we can just use ESCAPED_KEYWORD token to handle this case.
     17
     18        * parser/Lexer.cpp:
     19        (JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
     20        (JSC::Lexer<T>::lexWithoutClearingLineTerminator):
     21        * parser/Parser.cpp:
     22        (JSC::Parser<LexerType>::parseDestructuringPattern):
     23        (JSC::Parser<LexerType>::parseClass):
     24        (JSC::Parser<LexerType>::parseProperty):
     25        (JSC::Parser<LexerType>::printUnexpectedTokenText):
     26        * parser/Parser.h:
     27        (JSC::Parser<LexerType>::parse):
     28        * parser/ParserTokens.h:
     29
    1302020-12-04  Adam Roben  <aroben@apple.com>
    231
  • trunk/Source/JavaScriptCore/parser/Lexer.cpp

    r267330 r270481  
    11321132
    11331133    JSTokenType type = fillBuffer(identCharsStart == currentSourcePtr());
    1134     if (UNLIKELY(type & ErrorTokenFlag))
     1134    if (UNLIKELY(type & CanBeErrorTokenFlag))
    11351135        return type;
    11361136
     
    11441144
    11451145        type = fillBuffer();
    1146         if (UNLIKELY(type & ErrorTokenFlag))
     1146        if (UNLIKELY(type & CanBeErrorTokenFlag))
    11471147            return type;
    11481148    }
     
    11671167        JSTokenType token = static_cast<JSTokenType>(entry->lexerValue());
    11681168        if ((token != RESERVED_IF_STRICT) || strictMode)
    1169             return UNEXPECTED_ESCAPE_ERRORTOK;
     1169            return ESCAPED_KEYWORD;
    11701170    }
    11711171
     
    25772577    m_error = true;
    25782578    fillTokenInfo(tokenRecord, token, m_lineNumber, currentOffset(), currentLineStartOffset(), currentPosition());
    2579     RELEASE_ASSERT(token & ErrorTokenFlag);
     2579    RELEASE_ASSERT(token & CanBeErrorTokenFlag);
    25802580    return token;
    25812581}
  • trunk/Source/JavaScriptCore/parser/Parser.cpp

    r270043 r270481  
    4141#define propagateError() do { if (UNLIKELY(hasError())) return 0; } while (0)
    4242#define internalFailWithMessage(shouldPrintToken, ...) do { updateErrorMessage(shouldPrintToken, __VA_ARGS__); return 0; } while (0)
    43 #define handleErrorToken() do { if (m_token.m_type == EOFTOK || m_token.m_type & ErrorTokenFlag) { failDueToUnexpectedToken(); } } while (0)
     43#define handleErrorToken() do { if (m_token.m_type == EOFTOK || m_token.m_type & CanBeErrorTokenFlag) { failDueToUnexpectedToken(); } } while (0)
    4444#define failWithMessage(...) do { { handleErrorToken(); updateErrorMessage(true, __VA_ARGS__); } return 0; } while (0)
    4545#define failWithStackOverflow() do { updateErrorMessage(false, "Stack exhausted"); m_hasStackOverflow = true; return 0; } while (0)
     
    12091209            TreeDestructuringPattern innerPattern = 0;
    12101210            JSTokenLocation location = m_token.m_location;
    1211             if (matchSpecIdentifier()) {
     1211            bool escapedKeyword = match(ESCAPED_KEYWORD);
     1212            if (escapedKeyword || matchSpecIdentifier()) {
    12121213                failIfTrue(match(LET) && (kind == DestructuringKind::DestructureToLet || kind == DestructuringKind::DestructureToConst), "Cannot use 'let' as an identifier name for a LexicalDeclaration");
    12131214                propertyName = m_token.m_data.ident;
     
    12171218                    innerPattern = parseBindingOrAssignmentElement(context, kind, exportType, duplicateIdentifier, hasDestructuringPattern, bindingContext, depth + 1);
    12181219                else {
     1220                    semanticFailIfTrue(escapedKeyword, "Cannot use abbreviated destructuring syntax for keyword '", propertyName->impl(), "'");
    12191221                    if (kind == DestructuringKind::DestructureToExpressions) {
    12201222                        bool isEvalOrArguments = m_vm.propertyNames->eval == *propertyName || m_vm.propertyNames->arguments == *propertyName;
     
    29302932            next();
    29312933            break;
     2934        case ESCAPED_KEYWORD:
    29322935        case IDENT:
    29332936            if (UNLIKELY(*m_token.m_data.ident == m_vm.propertyNames->async && !m_token.m_data.escaped)) {
     
    41814184parseProperty:
    41824185    switch (m_token.m_type) {
     4186    case ESCAPED_KEYWORD:
    41834187    case IDENT:
    41844188        if (UNLIKELY(*m_token.m_data.ident == m_vm.propertyNames->async && !m_token.m_data.escaped)) {
     
    53385342        out.print("Invalid escape in identifier: '", getToken(), "'");
    53395343        return;
    5340     case UNEXPECTED_ESCAPE_ERRORTOK:
     5344    case ESCAPED_KEYWORD:
    53415345        out.print("Unexpected escaped characters in keyword token: '", getToken(), "'");
    53425346        return;
  • trunk/Source/JavaScriptCore/parser/Parser.h

    r269922 r270481  
    21302130            if (m_token.m_type == EOFTOK)
    21312131                errorType = ParserError::SyntaxErrorRecoverable;
    2132             else if (m_token.m_type & UnterminatedErrorTokenFlag) {
     2132            else if (m_token.m_type & UnterminatedCanBeErrorTokenFlag) {
    21332133                // Treat multiline capable unterminated literals as recoverable.
    21342134                if (m_token.m_type == UNTERMINATED_MULTILINE_COMMENT_ERRORTOK || m_token.m_type == UNTERMINATED_TEMPLATE_LITERAL_ERRORTOK)
  • trunk/Source/JavaScriptCore/parser/ParserTokens.h

    r262613 r270481  
    4949    BinaryOpTokenAllowsInPrecedenceAdditionalShift = 4,
    5050    BinaryOpTokenPrecedenceMask = 15 << BinaryOpTokenPrecedenceShift,
    51     ErrorTokenFlag = 1 << (BinaryOpTokenAllowsInPrecedenceAdditionalShift + BinaryOpTokenPrecedenceShift + 6),
    52     UnterminatedErrorTokenFlag = ErrorTokenFlag << 1,
    53     RightAssociativeBinaryOpTokenFlag = UnterminatedErrorTokenFlag << 1
     51    CanBeErrorTokenFlag = 1 << (BinaryOpTokenAllowsInPrecedenceAdditionalShift + BinaryOpTokenPrecedenceShift + 6),
     52    UnterminatedCanBeErrorTokenFlag = CanBeErrorTokenFlag << 1,
     53    RightAssociativeBinaryOpTokenFlag = UnterminatedCanBeErrorTokenFlag << 1
    5454};
    5555
     
    179179    MOD = 2 | BINARY_OP_PRECEDENCE(11),
    180180    POW = 0 | BINARY_OP_PRECEDENCE(12) | RightAssociativeBinaryOpTokenFlag, // Make sure that POW has the highest operator precedence.
    181     ERRORTOK = 0 | ErrorTokenFlag,
    182     UNTERMINATED_IDENTIFIER_ESCAPE_ERRORTOK = 0 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    183     INVALID_IDENTIFIER_ESCAPE_ERRORTOK = 1 | ErrorTokenFlag,
    184     UNTERMINATED_IDENTIFIER_UNICODE_ESCAPE_ERRORTOK = 2 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    185     INVALID_IDENTIFIER_UNICODE_ESCAPE_ERRORTOK = 3 | ErrorTokenFlag,
    186     UNTERMINATED_MULTILINE_COMMENT_ERRORTOK = 4 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    187     UNTERMINATED_NUMERIC_LITERAL_ERRORTOK = 5 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    188     UNTERMINATED_OCTAL_NUMBER_ERRORTOK = 6 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    189     INVALID_NUMERIC_LITERAL_ERRORTOK = 7 | ErrorTokenFlag,
    190     UNTERMINATED_STRING_LITERAL_ERRORTOK = 8 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    191     INVALID_STRING_LITERAL_ERRORTOK = 9 | ErrorTokenFlag,
    192     INVALID_PRIVATE_NAME_ERRORTOK = 10 | ErrorTokenFlag,
    193     UNTERMINATED_HEX_NUMBER_ERRORTOK = 11 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    194     UNTERMINATED_BINARY_NUMBER_ERRORTOK = 12 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    195     UNTERMINATED_TEMPLATE_LITERAL_ERRORTOK = 13 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    196     UNTERMINATED_REGEXP_LITERAL_ERRORTOK = 14 | ErrorTokenFlag | UnterminatedErrorTokenFlag,
    197     INVALID_TEMPLATE_LITERAL_ERRORTOK = 15 | ErrorTokenFlag,
    198     UNEXPECTED_ESCAPE_ERRORTOK = 16 | ErrorTokenFlag,
    199     INVALID_UNICODE_ENCODING_ERRORTOK = 17 | ErrorTokenFlag,
    200     INVALID_IDENTIFIER_UNICODE_ERRORTOK = 18 | ErrorTokenFlag,
     181    ERRORTOK = 0 | CanBeErrorTokenFlag,
     182    UNTERMINATED_IDENTIFIER_ESCAPE_ERRORTOK = 0 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     183    INVALID_IDENTIFIER_ESCAPE_ERRORTOK = 1 | CanBeErrorTokenFlag,
     184    UNTERMINATED_IDENTIFIER_UNICODE_ESCAPE_ERRORTOK = 2 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     185    INVALID_IDENTIFIER_UNICODE_ESCAPE_ERRORTOK = 3 | CanBeErrorTokenFlag,
     186    UNTERMINATED_MULTILINE_COMMENT_ERRORTOK = 4 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     187    UNTERMINATED_NUMERIC_LITERAL_ERRORTOK = 5 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     188    UNTERMINATED_OCTAL_NUMBER_ERRORTOK = 6 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     189    INVALID_NUMERIC_LITERAL_ERRORTOK = 7 | CanBeErrorTokenFlag,
     190    UNTERMINATED_STRING_LITERAL_ERRORTOK = 8 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     191    INVALID_STRING_LITERAL_ERRORTOK = 9 | CanBeErrorTokenFlag,
     192    INVALID_PRIVATE_NAME_ERRORTOK = 10 | CanBeErrorTokenFlag,
     193    UNTERMINATED_HEX_NUMBER_ERRORTOK = 11 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     194    UNTERMINATED_BINARY_NUMBER_ERRORTOK = 12 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     195    UNTERMINATED_TEMPLATE_LITERAL_ERRORTOK = 13 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     196    UNTERMINATED_REGEXP_LITERAL_ERRORTOK = 14 | CanBeErrorTokenFlag | UnterminatedCanBeErrorTokenFlag,
     197    INVALID_TEMPLATE_LITERAL_ERRORTOK = 15 | CanBeErrorTokenFlag,
     198    ESCAPED_KEYWORD = 16 | CanBeErrorTokenFlag,
     199    INVALID_UNICODE_ENCODING_ERRORTOK = 17 | CanBeErrorTokenFlag,
     200    INVALID_IDENTIFIER_UNICODE_ERRORTOK = 18 | CanBeErrorTokenFlag,
    201201};
    202202static_assert(static_cast<unsigned>(POW) <= 0x00ffffffU, "JSTokenType must be 24bits.");
Note: See TracChangeset for help on using the changeset viewer.