Ignore:
Timestamp:
Mar 10, 2016, 11:41:37 AM (9 years ago)
Author:
[email protected]
Message:

Assignment to new.target should be an early error
https://bugs.webkit.org/show_bug.cgi?id=151148

Reviewed by Mark Lam.

This patch makes it so that any form of assignment to new.target
is an early syntax error.

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createNewTargetExpr):
(JSC::ASTBuilder::isNewTarget):
(JSC::ASTBuilder::createResolve):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseUnaryExpression):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createThisExpr):
(JSC::SyntaxChecker::createSuperExpr):
(JSC::SyntaxChecker::createNewTargetExpr):
(JSC::SyntaxChecker::isNewTarget):
(JSC::SyntaxChecker::createResolve):
(JSC::SyntaxChecker::createObjectLiteral):

  • tests/es6.yaml:
  • tests/stress/new-target-syntax-errors.js: Added.

(shouldBeSyntaxError):
(shouldNotBeSyntaxError):

  • tests/stress/new-target.js:

(Constructor):
(doWeirdThings):
(noAssign): Deleted.
(catch): Deleted.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/parser/SyntaxChecker.h

    r197915 r197947  
    161161    ExpressionType createSuperExpr(const JSTokenLocation&) { return SuperExpr; }
    162162    ExpressionType createNewTargetExpr(const JSTokenLocation&) { return NewTargetExpr; }
     163    ALWAYS_INLINE bool isNewTarget(ExpressionType type) { return type == NewTargetExpr; }
    163164    ExpressionType createResolve(const JSTokenLocation&, const Identifier&, int, int) { return ResolveExpr; }
    164165    ExpressionType createObjectLiteral(const JSTokenLocation&) { return ObjectLiteralExpr; }
Note: See TracChangeset for help on using the changeset viewer.