Ignore:
Timestamp:
Oct 16, 2013, 6:02:34 PM (12 years ago)
Author:
[email protected]
Message:

Source/JavaScriptCore: Implement ES6 spread operator
https://bugs.webkit.org/show_bug.cgi?id=122911

Reviewed by Michael Saboff.

Implement the ES6 spread operator

This has a little bit of refactoring to move the enumeration logic out ForOfNode
and into BytecodeGenerator, and then adds the logic to make it nicely callback
driven.

The rest of the logic is just the addition of the SpreadExpressionNode, the parsing,
and actually handling the spread.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitNewArray):
(JSC::BytecodeGenerator::emitCall):
(JSC::BytecodeGenerator::emitEnumeration):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ArrayNode::emitBytecode):
(JSC::ForOfNode::emitBytecode):
(JSC::SpreadExpressionNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createSpreadExpression):

  • parser/Lexer.cpp:

(JSC::::lex):

  • parser/NodeConstructors.h:

(JSC::SpreadExpressionNode::SpreadExpressionNode):

  • parser/Nodes.h:

(JSC::ExpressionNode::isSpreadExpression):
(JSC::SpreadExpressionNode::expression):

  • parser/Parser.cpp:

(JSC::::parseArrayLiteral):
(JSC::::parseArguments):
(JSC::::parseMemberExpression):

  • parser/Parser.h:

(JSC::Parser::getTokenName):
(JSC::Parser::updateErrorMessageSpecialCase):

  • parser/ParserTokens.h:
  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createSpreadExpression):

LayoutTests: Implement spread
https://bugs.webkit.org/show_bug.cgi?id=122911

Reviewed by Michael Saboff.

Add testcases

  • js/basic-spread-expected.txt: Added.
  • js/basic-spread.html: Added.
  • js/parser-syntax-check-expected.txt:
  • js/script-tests/basic-spread.js: Added.

(f):
(o.f.o.f.o.f.o.f.h.eval.o.h.o.h.o.h.o.h.g):

  • js/script-tests/parser-syntax-check.js:
File:
1 edited

Legend:

Unmodified
Added
Removed
Note: See TracChangeset for help on using the changeset viewer.