Ignore:
Timestamp:
Oct 11, 2017, 11:45:23 PM (8 years ago)
Author:
Yusuke Suzuki
Message:

import.meta should not be assignable
https://bugs.webkit.org/show_bug.cgi?id=178202

Reviewed by Saam Barati.

JSTests:

  • modules/import-meta-assignment.js: Added.

(shouldThrow):
(SyntaxError.import.meta.can.shouldThrow):

Source/JavaScriptCore:

import.meta cannot be used for LHS. This patch adds MetaPropertyNode
and make NewTargetNode and ImportMetaNode as derived classes of MetaPropertyNode.
We change the parser not to allow assignments for MetaPropertyNode.

  • bytecompiler/NodesCodegen.cpp:

(JSC::ImportMetaNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createImportMetaExpr):
(JSC::ASTBuilder::isMetaProperty):
(JSC::ASTBuilder::isImportMeta):

  • parser/NodeConstructors.h:

(JSC::MetaPropertyNode::MetaPropertyNode):
(JSC::NewTargetNode::NewTargetNode):
(JSC::ImportMetaNode::ImportMetaNode):

  • parser/Nodes.h:

(JSC::ExpressionNode::isMetaProperty const):
(JSC::ExpressionNode::isImportMeta const):

  • parser/Parser.cpp:

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

  • parser/Parser.h:
  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createImportMetaExpr):
(JSC::SyntaxChecker::isMetaProperty):
(JSC::SyntaxChecker::isImportMeta):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r222689 r223232  
    210210
    211211    return generator.moveToDestinationIfNeeded(dst, generator.newTarget());
     212}
     213
     214// ------------------------------ ImportMetaNode ---------------------------------
     215
     216RegisterID* ImportMetaNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
     217{
     218    return generator.emitNode(dst, m_expr);
    212219}
    213220
Note: See TracChangeset for help on using the changeset viewer.