Changeset 271423 in webkit


Ignore:
Timestamp:
Jan 12, 2021 4:15:53 PM (3 years ago)
Author:
Ross Kirsling
Message:

[JSC] Class names must be lexed as strict mode code
https://bugs.webkit.org/show_bug.cgi?id=220567

Reviewed by Yusuke Suzuki.

JSTests:

  • test262/expectations.yaml:

Mark four test cases as passing.

Source/JavaScriptCore:

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):
Don't lex next token until *after* we've set up the class scope.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r271422 r271423  
     12021-01-12  Ross Kirsling  <ross.kirsling@sony.com>
     2
     3        [JSC] Class names must be lexed as strict mode code
     4        https://bugs.webkit.org/show_bug.cgi?id=220567
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        * test262/expectations.yaml:
     9        Mark four test cases as passing.
     10
    1112021-01-12  Yusuke Suzuki  <ysuzuki@apple.com>
    212
  • trunk/JSTests/test262/expectations.yaml

    r271265 r271423  
    14851485  default: "SyntaxError: Unexpected identifier 'await'. Expected opening '{' at the start of a class body."
    14861486  strict mode: "SyntaxError: Unexpected identifier 'await'. Expected opening '{' at the start of a class body."
    1487 test/language/expressions/class/class-name-ident-static-escaped.js:
    1488   default: 'Test262: This statement should not be evaluated.'
    1489 test/language/expressions/class/class-name-ident-static.js:
    1490   default: 'Test262: This statement should not be evaluated.'
    14911487test/language/expressions/class/elements/arrow-body-direct-eval-err-contains-arguments.js:
    14921488  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
     
    17441740  default: "SyntaxError: Unexpected identifier 'await'"
    17451741  strict mode: "SyntaxError: Unexpected identifier 'await'"
    1746 test/language/statements/class/class-name-ident-static-escaped.js:
    1747   default: 'Test262: This statement should not be evaluated.'
    1748 test/language/statements/class/class-name-ident-static.js:
    1749   default: 'Test262: This statement should not be evaluated.'
    17501742test/language/statements/class/elements/arrow-body-direct-eval-err-contains-arguments.js:
    17511743  default: 'Test262Error: Expected a SyntaxError but got a ReferenceError'
  • trunk/Source/JavaScriptCore/ChangeLog

    r271422 r271423  
     12021-01-12  Ross Kirsling  <ross.kirsling@sony.com>
     2
     3        [JSC] Class names must be lexed as strict mode code
     4        https://bugs.webkit.org/show_bug.cgi?id=220567
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        * parser/Parser.cpp:
     9        (JSC::Parser<LexerType>::parseClass):
     10        Don't lex next token until *after* we've set up the class scope.
     11
    1122021-01-12  Yusuke Suzuki  <ysuzuki@apple.com>
    213
  • trunk/Source/JavaScriptCore/parser/Parser.cpp

    r271265 r271423  
    28522852    info.startColumn = tokenColumn();
    28532853    info.startOffset = location.startOffset;
    2854     next();
    28552854
    28562855    AutoPopScopeRef classScope(this, pushScope());
     
    28582857    classScope->preventVarDeclarations();
    28592858    classScope->setStrictMode();
     2859    next();
    28602860
    28612861    ASSERT_WITH_MESSAGE(requirements != FunctionNameRequirements::Unnamed, "Currently, there is no caller that uses FunctionNameRequirements::Unnamed for class syntax.");
Note: See TracChangeset for help on using the changeset viewer.