Ignore:
Timestamp:
Jun 25, 2015, 8:13:25 PM (10 years ago)
Author:
Yusuke Suzuki
Message:

[ES6] Support rest element in destructuring assignments
https://bugs.webkit.org/show_bug.cgi?id=146206

Reviewed by Oliver Hunt.

This patch enables rest element (...rest) in array binding patterns.
It generates array from the iterables.
In variable declarations and parameters, [...identifier] form is only allowed,
while expressions can take [...[...rest]] pattern.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitEnumeration):
(JSC::BytecodeGenerator::emitIteratorNext):

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

(JSC::ArrayPatternNode::bindValue):
(JSC::ArrayPatternNode::toString):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::appendArrayPatternSkipEntry):
(JSC::ASTBuilder::appendArrayPatternEntry):
(JSC::ASTBuilder::appendArrayPatternRestEntry):

  • parser/Nodes.h:

(JSC::ArrayPatternNode::appendIndex):

  • parser/Parser.cpp:

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

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::operatorStackPop):

  • tests/stress/rest-elements.js: Added.

(shouldBe):
(shouldThrow):

File:
1 edited

Legend:

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

    r185791 r185981  
    312312    {
    313313    }
     314    void appendArrayPatternRestEntry(ArrayPattern, const JSTokenLocation&, DeconstructionPattern)
     315    {
     316    }
    314317    void finishArrayPattern(ArrayPattern, const JSTextPosition&, const JSTextPosition&, const JSTextPosition&)
    315318    {
Note: See TracChangeset for help on using the changeset viewer.