New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 811 link

Starred by 214 users

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2016
Cc:
HW: ----
NextAction: ----
OS: ----
Priority: ----
Type: FeatureRequest


Sign in to add a comment

Implement destructuring

Reported by pdk...@gmail.com, Aug 4 2010

Issue description

This is a useful feature which is not supported in V8.

https://developer.mozilla.org/en/New_in_JavaScript_1.7
 
Labels: Type-FeatureRequest
There are currently no plans for supporting non-ECMAScript features that are not present in Safari.

Comment 3 by ager@chromium.org, Aug 17 2010

Status: WorkingAsIntended
 Issue 2335  has been merged into this issue.

Comment 5 by nat...@nathan7.eu, Sep 17 2012

I consider the 'only stuff in Safari' argument void thanks to node.js, and the non-ECMAScript is somewhat void too now.
@nathan: Please elaborate. V8's primary use-case is Chromium, so we align our features with the requirements of Chromium. It's great that node.js is also relying on V8, but I don't see why this makes non-standard features necessary.

Comment 7 by nat...@nathan7.eu, Sep 17 2012

@yangguo: Currently, we have to rely on ugly constructions using with() or fiddling with array indices even though Mozilla's JS engines and Opera support an excellent syntax.
node.js is pretty large V8 userbase and certainly not the only V8 userbase apart from Chrome/Chromium. Limiting V8's features based on Chromium/Safari seems silly to me.
This feature is part of JavaScript 1.7 (http://goo.gl/sNZkg) - according to the top of this page, V8 is the "V8 JavaScript Engine", not the V8 ECMAScript engine.
Even if it were - this feature is in the draft ES6 "Harmony" spec, of which many features are implemented in V8.
Based on the fact that Destructuring is part of the ES6 scope, I am guessing that you will be implementing it within the next few months. Any update on this? I am writing a book on ES6 with O'Reilly, and would love to talk to one of the Chromium team members. 

Comment 9 Deleted

Comment 10 by jmar...@gmail.com, May 16 2013

<nag>Given that destructuring assignments have progressed to ES6 draft, does this ticket warrant a different status now?</nag> http://wiki.ecmascript.org/doku.php?id=harmony:destructuring

Comment 11 by stone...@gmail.com, May 30 2013

Hello v8 team. Guys, what your vision of possibility implementing this?
Why is this working as intended?

Comment 13 by jmar...@gmail.com, Jun 3 2013

It appears to have been marked "WorkingAsIntended" prior to destructuring assignment reaching ES6 Draft, so at the time it would have been the appropriate status.  It's been nearly 8 months since a project member has commented/updated this issue, though, and it's been closed since 2010.  Perhaps a new issue is in order that better reflects the current state of the specification?  From an external perspective, V8's policy seems to have been implementing features once they reach draft, which would imply this feature is ready to be put in the development queue.

Comment 14 by farid...@gmail.com, Aug 16 2013

Can you guys reconsider this? This is not really working as intended.

Comment 15 by arv@chromium.org, Sep 16 2013

Cc: danno@chromium.org dslomov@chromium.org rossberg@chromium.org
Labels: Harmony
Status: Accepted
This is part of ES6.
Owner: wi...@igalia.com
Status: Assigned
Summary: Implement destructuring (was: support destructuring assignment)
Note that this is supported in Safari as of 7.1.
a friendly Bump.
Owner: dslomov@chromium.org
Project Member

Comment 24 by bugdroid1@chromium.org, Apr 29 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/cec53692d17f21374fbd2df1fcef6f60adf7dd96

commit cec53692d17f21374fbd2df1fcef6f60adf7dd96
Author: dslomov <dslomov@chromium.org>
Date: Wed Apr 29 13:03:26 2015

Destructuring: add more parssing tests.

R=arv@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1112073002

Cr-Commit-Position: refs/heads/master@{#28131}

[modify] http://crrev.com/cec53692d17f21374fbd2df1fcef6f60adf7dd96/test/cctest/test-parsing.cc

Project Member

Comment 25 by bugdroid1@chromium.org, May 11 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/5bbe7992db92710e6615c4d2aab6a6ef45a3620f

commit 5bbe7992db92710e6615c4d2aab6a6ef45a3620f
Author: dslomov <dslomov@chromium.org>
Date: Mon May 11 16:28:28 2015

[destructuring] Implement basic binding destructuring infrastructure

This patch:
  - Refactors Parser::ParseVariableDeclarations
  - Introduces Parser::PatternMatcher class
  - Implements matching a single variable pattern
  - Implements rudimentary matching against object literal pattern
    as a proof of concept

R=arv@chromium.org,rossberg@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1130623004

Cr-Commit-Position: refs/heads/master@{#28345}

[modify] http://crrev.com/5bbe7992db92710e6615c4d2aab6a6ef45a3620f/BUILD.gn
[modify] http://crrev.com/5bbe7992db92710e6615c4d2aab6a6ef45a3620f/src/parser.cc
[modify] http://crrev.com/5bbe7992db92710e6615c4d2aab6a6ef45a3620f/src/parser.h
[add] http://crrev.com/5bbe7992db92710e6615c4d2aab6a6ef45a3620f/src/pattern-rewriter.cc
[add] http://crrev.com/5bbe7992db92710e6615c4d2aab6a6ef45a3620f/src/pattern-rewriter.h
[add] http://crrev.com/5bbe7992db92710e6615c4d2aab6a6ef45a3620f/test/mjsunit/harmony/destructuring.js
[modify] http://crrev.com/5bbe7992db92710e6615c4d2aab6a6ef45a3620f/tools/gyp/v8.gyp

I LOVE YOU GUYS! <3 <3 <3
:D!!

Comment 34 Deleted

Project Member

Comment 35 by bugdroid1@chromium.org, May 21 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8925b848eeb9ef996d36e23fedcaee80d02c14f5

commit 8925b848eeb9ef996d36e23fedcaee80d02c14f5
Author: dslomov <dslomov@chromium.org>
Date: Thu May 21 12:36:11 2015

[destructuring] Implement pattern matching in lexcal for-of/for-in.

R=arv@chromium.org,rossberg@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1152503002

Cr-Commit-Position: refs/heads/master@{#28547}

[modify] http://crrev.com/8925b848eeb9ef996d36e23fedcaee80d02c14f5/src/parser.cc
[modify] http://crrev.com/8925b848eeb9ef996d36e23fedcaee80d02c14f5/test/mjsunit/harmony/destructuring.js

Project Member

Comment 36 by bugdroid1@chromium.org, May 21 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7ffdb5194d51a5813f9474d2453859c376223b18

commit 7ffdb5194d51a5813f9474d2453859c376223b18
Author: dslomov <dslomov@chromium.org>
Date: Thu May 21 17:47:07 2015

[destructuring] Grand for statement parsing unification.

Also support patterns in ``for (var p in/of ...)``

This CL extends the rewriting we used to do for ``for (let p in/of...)`` to
``for (var p in/of ...)``. For all for..in/of loop declaring variable,
we rewrite
   for (var/let/const pattern in/of e) b
into
   for (x' in/of e) { var/let/const pattern = e; b }

This adds a small complication for debugger: for a statement
   for (var v in/of e) ...
we used to have
   var v;
   for (v in/of e) ...
and there was a separate breakpoint on ``var v`` line.
This breakpoint is actually useless since it is immediately followed by
a breakpoint on evaluation of ``e``, so this CL removes that breakpoint
location.

Similiraly, for let, it used to be that
  for (let v in/of e) ...
became
  for (x' in/of e) { let v; v  = x'; ... }
``let v``generetaed a useless breakpoint (with the location at the
loop's head. This CL removes that breakpoint as well.

R=arv@chromium.org,rossberg@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1149043005

Cr-Commit-Position: refs/heads/master@{#28565}

[modify] http://crrev.com/7ffdb5194d51a5813f9474d2453859c376223b18/src/parser.cc
[modify] http://crrev.com/7ffdb5194d51a5813f9474d2453859c376223b18/src/parser.h
[modify] http://crrev.com/7ffdb5194d51a5813f9474d2453859c376223b18/src/pattern-rewriter.cc
[modify] http://crrev.com/7ffdb5194d51a5813f9474d2453859c376223b18/test/cctest/test-parsing.cc
[modify] http://crrev.com/7ffdb5194d51a5813f9474d2453859c376223b18/test/mjsunit/es6/debug-stepnext-for.js
[modify] http://crrev.com/7ffdb5194d51a5813f9474d2453859c376223b18/test/mjsunit/harmony/destructuring.js

Project Member

Comment 39 by bugdroid1@chromium.org, Jun 22 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70

commit 42f30f4ded2b1ca0c4caa7639e6206e93c78ee70
Author: dslomov <dslomov@chromium.org>
Date: Mon Jun 22 12:06:55 2015

[destructuring] Implement parameter pattern matching.

Scoping for initializers is yet incorrect. Defaults are not supported.

R=arv@chromium.org,rossberg@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1189743003

Cr-Commit-Position: refs/heads/master@{#29184}

[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/src/parser.cc
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/src/parser.h
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/src/pattern-rewriter.cc
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/src/preparser.cc
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/src/preparser.h
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/src/scopes.cc
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/test/cctest/test-parsing.cc
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/test/mjsunit/harmony/destructuring.js
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/test/mjsunit/regress/regress-1130.js
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/test/mjsunit/regress/regress-436896.js
[modify] http://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70/test/webkit/fast/js/arguments-expected.txt

Project Member

Comment 40 by bugdroid1@chromium.org, Jun 22 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/82e80605152f24c7ee1e738a0d1c890156ce038c

commit 82e80605152f24c7ee1e738a0d1c890156ce038c
Author: machenbach <machenbach@chromium.org>
Date: Mon Jun 22 13:14:13 2015

Revert of [destructuring] Implement parameter pattern matching. (patchset #7 id:120001 of https://codereview.chromium.org/1189743003/)

Reason for revert:
[Sheriff] Breaks tsan:
http://build.chromium.org/p/client.v8/builders/V8%20Linux64%20TSAN/builds/4392

Original issue's description:
> [destructuring] Implement parameter pattern matching.
>
> Scoping for initializers is yet incorrect. Defaults are not supported.
>
> R=arv@chromium.org,rossberg@chromium.org
> BUG= v8:811 
> LOG=N
>
> Committed: https://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70
> Cr-Commit-Position: refs/heads/master@{#29184}

TBR=arv@chromium.org,rossberg@chromium.org,caitpotter88@gmail.com,wingo@igalia.com,dslomov@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:811 

Review URL: https://codereview.chromium.org/1195163007

Cr-Commit-Position: refs/heads/master@{#29188}

[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/src/parser.cc
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/src/parser.h
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/src/pattern-rewriter.cc
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/src/preparser.cc
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/src/preparser.h
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/src/scopes.cc
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/test/cctest/test-parsing.cc
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/test/mjsunit/harmony/destructuring.js
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/test/mjsunit/regress/regress-1130.js
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/test/mjsunit/regress/regress-436896.js
[modify] http://crrev.com/82e80605152f24c7ee1e738a0d1c890156ce038c/test/webkit/fast/js/arguments-expected.txt

Project Member

Comment 41 by bugdroid1@chromium.org, Jun 22 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e7cdb615aeb18f7b4089eb646489d78a853050c9

commit e7cdb615aeb18f7b4089eb646489d78a853050c9
Author: dslomov <dslomov@chromium.org>
Date: Mon Jun 22 14:15:53 2015

[destructuring] Implement parameter pattern matching.

Scoping for initializers is yet incorrect. Defaults are not supported.

R=arv@chromium.org,rossberg@chromium.org
BUG= v8:811 
LOG=N

Committed: https://crrev.com/42f30f4ded2b1ca0c4caa7639e6206e93c78ee70
Cr-Commit-Position: refs/heads/master@{#29184}

Review URL: https://codereview.chromium.org/1189743003

Cr-Commit-Position: refs/heads/master@{#29192}

[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/src/parser.cc
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/src/parser.h
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/src/pattern-rewriter.cc
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/src/preparser.cc
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/src/preparser.h
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/src/scopes.cc
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/src/snapshot/serialize.cc
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/test/cctest/test-parsing.cc
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/test/mjsunit/harmony/destructuring.js
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/test/mjsunit/regress/regress-1130.js
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/test/mjsunit/regress/regress-436896.js
[modify] http://crrev.com/e7cdb615aeb18f7b4089eb646489d78a853050c9/test/webkit/fast/js/arguments-expected.txt

Project Member

Comment 42 by bugdroid1@chromium.org, Jun 26 2015

Blockedon: v8:507596
Blockedon: -v8:507596 chromium:507596

Comment 46 by adamk@chromium.org, Jul 17 2015

Cc: -danno@chromium.org -dslomov@chromium.org -rossberg@chromium.org adamk@chromium.org
Owner: rossberg@chromium.org
Project Member

Comment 47 by bugdroid1@chromium.org, Jul 20 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/fa94ca3ea422bbdc5a2b0d2ad42f7438456a95a9

commit fa94ca3ea422bbdc5a2b0d2ad42f7438456a95a9
Author: rossberg <rossberg@chromium.org>
Date: Mon Jul 20 13:48:57 2015

[es6] Check declaration conflicts between non-simple parameters and the function body

Also, more tests for parameters containing functions or eval or both.

R=adamk@chromium.org, caitpotter88@gmail.com, littledan@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1225413005

Cr-Commit-Position: refs/heads/master@{#29752}

[modify] http://crrev.com/fa94ca3ea422bbdc5a2b0d2ad42f7438456a95a9/src/parser.cc
[modify] http://crrev.com/fa94ca3ea422bbdc5a2b0d2ad42f7438456a95a9/src/scopes.cc
[modify] http://crrev.com/fa94ca3ea422bbdc5a2b0d2ad42f7438456a95a9/test/mjsunit/harmony/destructuring.js

Project Member

Comment 48 by bugdroid1@chromium.org, Aug 4 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/56bd11a11a4fc4b26f215ea5ca3217958db091fd

commit 56bd11a11a4fc4b26f215ea5ca3217958db091fd
Author: rossberg <rossberg@chromium.org>
Date: Tue Aug 04 14:24:13 2015

[es6] Refactor FormalParameter

Store arity in FormalParameters; store name (instead of var) and is_rest flag in individual parameters. Ensure that the arity is always maintained consistently.

This is preparation for more parameter destructuring adjustments. In particular, a follow-up CL will separate parameter recording from declaring the variables.

R=adamk@chromium.org, littledan@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1259013003

Cr-Commit-Position: refs/heads/master@{#30002}

[modify] http://crrev.com/56bd11a11a4fc4b26f215ea5ca3217958db091fd/src/parser.cc
[modify] http://crrev.com/56bd11a11a4fc4b26f215ea5ca3217958db091fd/src/parser.h
[modify] http://crrev.com/56bd11a11a4fc4b26f215ea5ca3217958db091fd/src/preparser.cc
[modify] http://crrev.com/56bd11a11a4fc4b26f215ea5ca3217958db091fd/src/preparser.h
[modify] http://crrev.com/56bd11a11a4fc4b26f215ea5ca3217958db091fd/test/cctest/test-parsing.cc

Project Member

Comment 49 by bugdroid1@chromium.org, Aug 5 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4273f66e9882f1239c6b7846c31730d47b870d81

commit 4273f66e9882f1239c6b7846c31730d47b870d81
Author: rossberg <rossberg@chromium.org>
Date: Wed Aug 05 12:00:41 2015

[es6] Implement proper TDZ for parameters

Previously, examples like (({a = x}, x) => {})({}, 0) did not throw a ReferenceError like they should. This CL

- Splits up DeclareFormalParameters such that the formals can be recorded first and declared later.

- Declaration then takes the complete parameter list into account. If it is not simple, temporaries are introduced for all parameters.

- BuildParameterInitializationBlock desugars all parameters from non-simple lists into let-bindings.

- Refactored Pre/ParserFormalParameters, so that the arity information is no longer duplicated in Parser.

- Rest is currently handled specially, until rest-via-destructuring has landed.

R=adamk@chromium.org, littledan@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1259283002

Cr-Commit-Position: refs/heads/master@{#30025}

[modify] http://crrev.com/4273f66e9882f1239c6b7846c31730d47b870d81/src/parser.cc
[modify] http://crrev.com/4273f66e9882f1239c6b7846c31730d47b870d81/src/parser.h
[modify] http://crrev.com/4273f66e9882f1239c6b7846c31730d47b870d81/src/preparser.h
[modify] http://crrev.com/4273f66e9882f1239c6b7846c31730d47b870d81/test/mjsunit/harmony/destructuring.js
[modify] http://crrev.com/4273f66e9882f1239c6b7846c31730d47b870d81/test/test262-es6/test262-es6.status

Project Member

Comment 50 by bugdroid1@chromium.org, Aug 7 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/826f8da55fb868a365d047a4a653eb8ff2bfc14e

commit 826f8da55fb868a365d047a4a653eb8ff2bfc14e
Author: rossberg <rossberg@chromium.org>
Date: Fri Aug 07 11:38:20 2015

[es6] Use strict arguments objects for destructured parameters

Plus some renaming for consistency.

R=adamk@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1278783002

Cr-Commit-Position: refs/heads/master@{#30064}

[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/compiler.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/compiler.h
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/factory.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/full-codegen/arm/full-codegen-arm.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/full-codegen/arm64/full-codegen-arm64.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/full-codegen/full-codegen.h
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/full-codegen/ia32/full-codegen-ia32.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/full-codegen/mips/full-codegen-mips.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/full-codegen/mips64/full-codegen-mips64.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/full-codegen/ppc/full-codegen-ppc.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/full-codegen/x64/full-codegen-x64.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/full-codegen/x87/full-codegen-x87.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/objects-inl.h
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/objects.h
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/parser.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/runtime/runtime-scopes.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/scopeinfo.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/scopes.cc
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/src/scopes.h
[modify] http://crrev.com/826f8da55fb868a365d047a4a653eb8ff2bfc14e/test/mjsunit/harmony/destructuring.js

Project Member

Comment 51 by bugdroid1@chromium.org, Aug 7 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/73ae23b5dc9bd816474688e74b9b768a09b9711f

commit 73ae23b5dc9bd816474688e74b9b768a09b9711f
Author: rossberg <rossberg@chromium.org>
Date: Fri Aug 07 21:55:44 2015

[es6] Fix parsing of expressions in patterns

Fixes the use of eval calls in strict parameter lists in particular.

R=adamk@chromium.org
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1276273002

Cr-Commit-Position: refs/heads/master@{#30074}

[modify] http://crrev.com/73ae23b5dc9bd816474688e74b9b768a09b9711f/src/expression-classifier.h
[modify] http://crrev.com/73ae23b5dc9bd816474688e74b9b768a09b9711f/src/preparser.h
[modify] http://crrev.com/73ae23b5dc9bd816474688e74b9b768a09b9711f/test/mjsunit/harmony/destructuring.js

Project Member

Comment 52 by bugdroid1@chromium.org, Aug 21 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/365fd7bc351705e4fb181741829f89e580549daf

commit 365fd7bc351705e4fb181741829f89e580549daf
Author: rossberg <rossberg@chromium.org>
Date: Fri Aug 21 10:58:35 2015

[es6] Parameter scopes for sloppy eval

This CL is a nightmare! For the utterly irrelevant edge case of a sloppy function with non-simple parameters and a call to direct eval, like here,

  let x = 1;
  function f(g = () => x) {
    var y
    eval("var x = 2")
    return g() + x  // f() = 3
  }

we have to do all of the following, on top of the declaration block ("varblock") contexts we already introduce around the body:

- Introduce the ability for varblock contexts to have both a ScopeInfo and an extension object (e.g., the body varblock in the example will contain both a static var y and a dynamic var x). No other scope needs that. Since there are no context slots left, a special new struct is introduced that pairs up scope info and extension object.

- When declaring lookup slots in the runtime, this new struct is allocated in the case where an extension object has to be added to a block scope (at which point the block's extension slot still contains a plain ScopeInfo).

- While at it, introduce some abstraction to access context extension slots in a more controlled manner, in order to keep special-casing to a minimum.

- Make sure that even empty varblock contexts do not get optimised away when they contain a sloppy eval, so that they can host the potential extension object.

- Extend dynamic search for declaration contexts (used by sloppy direct eval) to recognize varblock contexts.

- In the parser, if a function has a sloppy direct eval, introduce an additional varblock scope around each non-simple (desugared) parameter, as required by the spec to contain possible dynamic var bindings.

- In the pattern rewriter, add the ability to hoist the named variables the pattern declares to an outer scope. That is required because the actual destructuring has to be evaluated inside the protecting varblock scope, but the bindings that the desugaring introduces are in the outer scope.

- ScopeInfos need to save the information whether a block is a varblock, to make sloppy eval calls work correctly that deserialise them as part of the scope chain.

- Add the ability to materialize block scopes with extension objects in the debugger. Likewise, enable setting extension variables in block scopes via the debugger interface.

- While at it, refactor and unify some respective code in the debugger.

Sorry, this CL is large. I could try to split it up, but everything is rather entangled.

@mstarzinger: Please review the changes to contexts.
@yangguo: Please have a look at the debugger stuff.

R=littledan@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org
BUG= v8:811 , v8:2160 
LOG=N

Review URL: https://codereview.chromium.org/1292753007

Cr-Commit-Position: refs/heads/master@{#30295}

[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/include/v8.h
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/bootstrapper.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/compiler/ast-graph-builder.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/contexts.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/contexts.h
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/debug/debug-scopes.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/debug/debug-scopes.h
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/factory.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/factory.h
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/full-codegen/full-codegen.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/hydrogen.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/objects-debug.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/objects-inl.h
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/objects-printer.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/objects.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/objects.h
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/parser.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/parser.h
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/pattern-rewriter.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/runtime/runtime-object.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/runtime/runtime-scopes.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/scopeinfo.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/scopes.cc
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/src/scopes.h
[modify] http://crrev.com/365fd7bc351705e4fb181741829f89e580549daf/test/mjsunit/harmony/default-parameters.js

Project Member

Comment 53 by bugdroid1@chromium.org, Aug 24 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/ff932fe8f4f82a6832c4f649ad00b3ae59f53822

commit ff932fe8f4f82a6832c4f649ad00b3ae59f53822
Author: rossberg <rossberg@chromium.org>
Date: Mon Aug 24 18:00:59 2015

[es6] Fix default parameters in arrow functions

R=adamk@chromium.org, wingo@igalia.com
BUG= v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1314543005

Cr-Commit-Position: refs/heads/master@{#30338}

[modify] http://crrev.com/ff932fe8f4f82a6832c4f649ad00b3ae59f53822/src/parser.cc
[modify] http://crrev.com/ff932fe8f4f82a6832c4f649ad00b3ae59f53822/test/cctest/test-parsing.cc

Comment 54 by adamk@chromium.org, Aug 31 2015

Blockedon: v8:2160
Blockedon: v8:4407

Comment 56 by adamk@chromium.org, Sep 25 2015

Blockedon: v8:4440
Project Member

Comment 57 by bugdroid1@chromium.org, Oct 1 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/2c2848dccf697830dab75f59a2b7a72af48cbc48

commit 2c2848dccf697830dab75f59a2b7a72af48cbc48
Author: rossberg <rossberg@chromium.org>
Date: Thu Oct 01 10:42:23 2015

[es6] Scoping & initialization for var shadowing non-simple parameters

Var-bindings may shadow parameters from a non-simple parameter list. When that happens: they create separate bindings, but are initialised with the respective parameter value. Thus:

(function(x, f = () => x) { var x; var y = x; x = 2; return [x, y, f()] })(1) -->  [2, 1, 1]

This CL implements that by inserting a suitable assignment for every shadwowing var-variable (e.g., x = outer_x above) at the beginning of the function's body block.

R=adamk@chromium.org
BUG= v8:4440 , v8:811 
LOG=N

Review URL: https://codereview.chromium.org/1371333004

Cr-Commit-Position: refs/heads/master@{#31042}

[modify] http://crrev.com/2c2848dccf697830dab75f59a2b7a72af48cbc48/src/parser.cc
[modify] http://crrev.com/2c2848dccf697830dab75f59a2b7a72af48cbc48/src/parser.h
[modify] http://crrev.com/2c2848dccf697830dab75f59a2b7a72af48cbc48/src/scopes.cc
[modify] http://crrev.com/2c2848dccf697830dab75f59a2b7a72af48cbc48/test/mjsunit/harmony/destructuring.js

Blockedon: v8:4488
Cc: -adamk@chromium.org rossberg@chromium.org
Owner: adamk@chromium.org
Project Member

Comment 60 by bugdroid1@chromium.org, Nov 4 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a316db995e6e4253664920652ed4e5a38b2caeba

commit a316db995e6e4253664920652ed4e5a38b2caeba
Author: adamk <adamk@chromium.org>
Date: Wed Nov 04 16:06:18 2015

[es6] Implement destructuring binding in try/catch

The approach is to desugar

  try { ... }
  catch ({x, y}) { ... }

into

  try { ... }
  catch (.catch) {
    let x = .catch.x;
    let y = .catch.y;
    ...
  }

using the PatternRewriter's normal facilities. This has the side benefit
of throwing the appropriate variable conflict errors for declarations
made inside the catch block.

No change is made to non-destructured cases, which will hopefully save
us some work if https://github.com/tc39/ecma262/issues/150 is adopted
in the spec.

There's one big problem with this patch, which is a lack of PreParser
support for the redeclaration errors. But it seems we're already lacking
good PreParser support for such errors, so I'm not sure that should
block this moving forward.

BUG= v8:811 
LOG=y

Review URL: https://codereview.chromium.org/1417483014

Cr-Commit-Position: refs/heads/master@{#31797}

[modify] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/src/ast-value-factory.h
[modify] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/src/parser.cc
[modify] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/src/preparser.cc
[modify] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/cctest/test-parsing.cc
[add] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/message/try-catch-lexical-conflict.js
[add] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/message/try-catch-lexical-conflict.out
[add] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/message/try-catch-variable-conflict.js
[add] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/message/try-catch-variable-conflict.out
[modify] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/mjsunit/harmony/destructuring.js

Project Member

Comment 61 by bugdroid1@chromium.org, Nov 4 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f687c4f4e69afd456ddcf654daf62ae00bb18641

commit f687c4f4e69afd456ddcf654daf62ae00bb18641
Author: adamk <adamk@chromium.org>
Date: Wed Nov 04 16:39:35 2015

Revert of [es6] Implement destructuring binding in try/catch (patchset #3 id:40001 of https://codereview.chromium.org/1417483014/ )

Reason for revert:
MSAN errors on arm64: http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/builds/5123/

Original issue's description:
> [es6] Implement destructuring binding in try/catch
>
> The approach is to desugar
>
>   try { ... }
>   catch ({x, y}) { ... }
>
> into
>
>   try { ... }
>   catch (.catch) {
>     let x = .catch.x;
>     let y = .catch.y;
>     ...
>   }
>
> using the PatternRewriter's normal facilities. This has the side benefit
> of throwing the appropriate variable conflict errors for declarations
> made inside the catch block.
>
> No change is made to non-destructured cases, which will hopefully save
> us some work if https://github.com/tc39/ecma262/issues/150 is adopted
> in the spec.
>
> There's one big problem with this patch, which is a lack of PreParser
> support for the redeclaration errors. But it seems we're already lacking
> good PreParser support for such errors, so I'm not sure that should
> block this moving forward.
>
> BUG= v8:811 
> LOG=y
>
> Committed: https://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba
> Cr-Commit-Position: refs/heads/master@{#31797}

TBR=rossberg@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:811 

Review URL: https://codereview.chromium.org/1408063013

Cr-Commit-Position: refs/heads/master@{#31798}

[modify] http://crrev.com/f687c4f4e69afd456ddcf654daf62ae00bb18641/src/ast-value-factory.h
[modify] http://crrev.com/f687c4f4e69afd456ddcf654daf62ae00bb18641/src/parser.cc
[modify] http://crrev.com/f687c4f4e69afd456ddcf654daf62ae00bb18641/src/preparser.cc
[modify] http://crrev.com/f687c4f4e69afd456ddcf654daf62ae00bb18641/test/cctest/test-parsing.cc
[delete] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/message/try-catch-lexical-conflict.js
[delete] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/message/try-catch-lexical-conflict.out
[delete] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/message/try-catch-variable-conflict.js
[delete] http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba/test/message/try-catch-variable-conflict.out
[modify] http://crrev.com/f687c4f4e69afd456ddcf654daf62ae00bb18641/test/mjsunit/harmony/destructuring.js

Project Member

Comment 62 by bugdroid1@chromium.org, Nov 5 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/80a1e004f4ef619b54a2d87bf2108719a8411860

commit 80a1e004f4ef619b54a2d87bf2108719a8411860
Author: adamk <adamk@chromium.org>
Date: Thu Nov 05 17:27:49 2015

Revert "Revert of [es6] Implement destructuring binding in try/catch"

Reland try/catch destructuring with a fix for the MemorySanitizer failure:
initialization_pos needs to be initialized in the DeclarationDescriptor.

This is a one line fix to http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba

BUG= v8:811 
LOG=y

Review URL: https://codereview.chromium.org/1411323008

Cr-Commit-Position: refs/heads/master@{#31834}

[modify] http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860/src/ast-value-factory.h
[modify] http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860/src/parser.cc
[modify] http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860/src/preparser.cc
[modify] http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860/test/cctest/test-parsing.cc
[add] http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860/test/message/try-catch-lexical-conflict.js
[add] http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860/test/message/try-catch-lexical-conflict.out
[add] http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860/test/message/try-catch-variable-conflict.js
[add] http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860/test/message/try-catch-variable-conflict.out
[modify] http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860/test/mjsunit/harmony/destructuring.js

Project Member

Comment 63 by bugdroid1@chromium.org, Nov 5 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/35a60c211e955f6c1b76a268ebb9317e6a6574af

commit 35a60c211e955f6c1b76a268ebb9317e6a6574af
Author: machenbach <machenbach@chromium.org>
Date: Thu Nov 05 19:28:40 2015

Revert of Revert "Revert of [es6] Implement destructuring binding in try/catch" (patchset #2 id:20001 of https://codereview.chromium.org/1411323008/ )

Reason for revert:
[Sheriff] Breaks a layout test:
https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/2750

Please request rebase upstream first if intended.

Original issue's description:
> Revert "Revert of [es6] Implement destructuring binding in try/catch"
>
> Reland try/catch destructuring with a fix for the MemorySanitizer failure:
> initialization_pos needs to be initialized in the DeclarationDescriptor.
>
> This is a one line fix to http://crrev.com/a316db995e6e4253664920652ed4e5a38b2caeba
>
> BUG= v8:811 
> LOG=y
>
> Committed: https://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860
> Cr-Commit-Position: refs/heads/master@{#31834}

TBR=littledan@chromium.org,rossberg@chromium.org,adamk@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:811 

Review URL: https://codereview.chromium.org/1421193006

Cr-Commit-Position: refs/heads/master@{#31840}

[modify] http://crrev.com/35a60c211e955f6c1b76a268ebb9317e6a6574af/src/ast-value-factory.h
[modify] http://crrev.com/35a60c211e955f6c1b76a268ebb9317e6a6574af/src/parser.cc
[modify] http://crrev.com/35a60c211e955f6c1b76a268ebb9317e6a6574af/src/preparser.cc
[modify] http://crrev.com/35a60c211e955f6c1b76a268ebb9317e6a6574af/test/cctest/test-parsing.cc
[delete] http://crrev.com/83f60ab5ac10f5a7b20321bb872df0ef00b9dc73/test/message/try-catch-lexical-conflict.js
[delete] http://crrev.com/83f60ab5ac10f5a7b20321bb872df0ef00b9dc73/test/message/try-catch-lexical-conflict.out
[delete] http://crrev.com/83f60ab5ac10f5a7b20321bb872df0ef00b9dc73/test/message/try-catch-variable-conflict.js
[delete] http://crrev.com/83f60ab5ac10f5a7b20321bb872df0ef00b9dc73/test/message/try-catch-variable-conflict.out
[modify] http://crrev.com/35a60c211e955f6c1b76a268ebb9317e6a6574af/test/mjsunit/harmony/destructuring.js

Project Member

Comment 64 by bugdroid1@chromium.org, Nov 5 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e33c4b450f58d6dd33e56263c0f64d7f79450929

commit e33c4b450f58d6dd33e56263c0f64d7f79450929
Author: adamk <adamk@chromium.org>
Date: Thu Nov 05 20:21:20 2015

Re-re-land "[es6] Implement destructuring binding in try/catch"

http://crrev.com/80a1e004f4ef619b54a2d87bf2108719a8411860 was reverted
due to a Blink test failure. That test has been marked as failing on
the Blink side in https://chromium.googlesource.com/chromium/src/+/ac11c6df133.

BUG= v8:811 
LOG=y
TBR=rossberg@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1409093005

Cr-Commit-Position: refs/heads/master@{#31842}

[modify] http://crrev.com/e33c4b450f58d6dd33e56263c0f64d7f79450929/src/ast-value-factory.h
[modify] http://crrev.com/e33c4b450f58d6dd33e56263c0f64d7f79450929/src/parser.cc
[modify] http://crrev.com/e33c4b450f58d6dd33e56263c0f64d7f79450929/src/preparser.cc
[modify] http://crrev.com/e33c4b450f58d6dd33e56263c0f64d7f79450929/test/cctest/test-parsing.cc
[add] http://crrev.com/e33c4b450f58d6dd33e56263c0f64d7f79450929/test/message/try-catch-lexical-conflict.js
[add] http://crrev.com/e33c4b450f58d6dd33e56263c0f64d7f79450929/test/message/try-catch-lexical-conflict.out
[add] http://crrev.com/e33c4b450f58d6dd33e56263c0f64d7f79450929/test/message/try-catch-variable-conflict.js
[add] http://crrev.com/e33c4b450f58d6dd33e56263c0f64d7f79450929/test/message/try-catch-variable-conflict.out
[modify] http://crrev.com/e33c4b450f58d6dd33e56263c0f64d7f79450929/test/mjsunit/harmony/destructuring.js

Project Member

Comment 65 by bugdroid1@chromium.org, Nov 5 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/2a866bc4dd6318692aee0ea45b20da3f1c0a5420

commit 2a866bc4dd6318692aee0ea45b20da3f1c0a5420
Author: adamk <adamk@chromium.org>
Date: Thu Nov 05 21:40:01 2015

Stage --harmony-destructuring and --harmony-default-parameters

Since enabling destructuring already implies enabling default parameters,
there's not a good way to separate these two. Luckily, they're both
feature-complete (save for destructuring assignment).

This causes us to pass an additional 24 test262 tests.

BUG= v8:811 ,  v8:2160 
LOG=y

Review URL: https://codereview.chromium.org/1407393009

Cr-Commit-Position: refs/heads/master@{#31844}

[modify] http://crrev.com/2a866bc4dd6318692aee0ea45b20da3f1c0a5420/src/flag-definitions.h
[modify] http://crrev.com/2a866bc4dd6318692aee0ea45b20da3f1c0a5420/test/test262/test262.status

Project Member

Comment 66 by bugdroid1@chromium.org, Nov 18 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7d1d9786542cd0c0310244ca04eec1d085d3bbdd

commit 7d1d9786542cd0c0310244ca04eec1d085d3bbdd
Author: adamk <adamk@chromium.org>
Date: Wed Nov 18 23:29:36 2015

Rename destructuring flag to "--harmony-destructuring-bind"

This is in preparation for the addition of --harmony-destructuring-assignment.

BUG= v8:811 
LOG=n

Review URL: https://codereview.chromium.org/1450193002

Cr-Commit-Position: refs/heads/master@{#32098}

[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/src/bootstrapper.cc
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/src/flag-definitions.h
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/src/parser.cc
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/src/parser.h
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/src/preparser.cc
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/src/preparser.h
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/cctest/test-parsing.cc
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/message/destructuring-decl-no-init-array.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/message/destructuring-decl-no-init-array2.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/message/destructuring-decl-no-init-obj.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/message/destructuring-decl-no-init-obj2.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/message/destructuring-modify-const.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/message/let-lexical-name-in-array-prohibited.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/message/let-lexical-name-in-object-prohibited.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/message/try-catch-lexical-conflict.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/message/try-catch-variable-conflict.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/es6/new-target.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/es6/regress/regress-cr512574.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/es6/super.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/block-let-contextual-sloppy.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/block-sloppy-function.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/default-parameters-destructuring.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/destructuring-parameters-literalcount-nolazy.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/destructuring-parameters-literalcount.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/destructuring.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/do-expressions.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/regress/regress-4395-global-eval.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/regress/regress-4395.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/harmony/regress/regress-517455.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/regress/regress-552302.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/strong/destructuring.js
[modify] http://crrev.com/7d1d9786542cd0c0310244ca04eec1d085d3bbdd/test/mjsunit/strong/literals.js

Project Member

Comment 67 by bugdroid1@chromium.org, Nov 24 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/515093630a4a925a66d550561e38293d49633f10

commit 515093630a4a925a66d550561e38293d49633f10
Author: adamk <adamk@chromium.org>
Date: Tue Nov 24 16:49:46 2015

Move --harmony-destructuring-bind to shipping

Also fix CheckConflictingVarDeclarations() to properly handle
legacy const bindings. Without that change enabling the flag
causes code like:

  function f() { const x; var x; }

to throw an early error, rather than wait to throw the error
until f is invoked.

BUG= v8:811 
LOG=y
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1451843002

Cr-Commit-Position: refs/heads/master@{#32222}

[modify] http://crrev.com/515093630a4a925a66d550561e38293d49633f10/src/flag-definitions.h
[modify] http://crrev.com/515093630a4a925a66d550561e38293d49633f10/src/scopes.cc
[modify] http://crrev.com/515093630a4a925a66d550561e38293d49633f10/test/mozilla/mozilla.status

Project Member

Comment 68 by bugdroid1@chromium.org, Nov 24 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d756c65382e3bfa1db6b5e6005d085456e6301f9

commit d756c65382e3bfa1db6b5e6005d085456e6301f9
Author: adamk <adamk@chromium.org>
Date: Tue Nov 24 18:58:55 2015

Revert of Move --harmony-destructuring-bind to shipping (patchset #5 id:80001 of https://codereview.chromium.org/1451843002/ )

Reason for revert:
Fails on V8 Fuzzer: https://build.chromium.org/p/client.v8/builders/V8%20Fuzzer/builds/6028

Original issue's description:
> Move --harmony-destructuring-bind to shipping
>
> Also fix CheckConflictingVarDeclarations() to properly handle
> legacy const bindings. Without that change enabling the flag
> causes code like:
>
>   function f() { const x; var x; }
>
> to throw an early error, rather than wait to throw the error
> until f is invoked.
>
> BUG= v8:811 
> LOG=y
> CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
>
> Committed: https://crrev.com/515093630a4a925a66d550561e38293d49633f10
> Cr-Commit-Position: refs/heads/master@{#32222}

TBR=rossberg@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:811 

Review URL: https://codereview.chromium.org/1470333002

Cr-Commit-Position: refs/heads/master@{#32226}

[modify] http://crrev.com/d756c65382e3bfa1db6b5e6005d085456e6301f9/src/flag-definitions.h
[modify] http://crrev.com/d756c65382e3bfa1db6b5e6005d085456e6301f9/src/scopes.cc
[modify] http://crrev.com/d756c65382e3bfa1db6b5e6005d085456e6301f9/test/mozilla/mozilla.status

Project Member

Comment 69 by bugdroid1@chromium.org, Nov 25 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/ceb92ebfdfb561d71038793c02b42aa973f55ec4

commit ceb92ebfdfb561d71038793c02b42aa973f55ec4
Author: adamk <adamk@chromium.org>
Date: Wed Nov 25 01:14:58 2015

Disallow destructuring in legacy sloppy for-in loop parsing

For web compat reasons, we support an initializer in the declaration
part of a for-in loop. But we should disallow this for destructured
declarations (just as we do for lexical declarations). In fact, without
disallowing it, we crash.

Also fix up the PreParser to have the same restrictions here as the parser
(the lexical check was missing there), verified by running the message tests
with --min-preparse-length=0.

In fixing the logic I've also cleaned up the code a bit, removing the
only-called-once DeclarationParsingResult::SingleName method.

BUG= v8:811 
LOG=n

Review URL: https://codereview.chromium.org/1471973003

Cr-Commit-Position: refs/heads/master@{#32236}

[modify] http://crrev.com/ceb92ebfdfb561d71038793c02b42aa973f55ec4/src/parser.cc
[modify] http://crrev.com/ceb92ebfdfb561d71038793c02b42aa973f55ec4/src/parser.h
[modify] http://crrev.com/ceb92ebfdfb561d71038793c02b42aa973f55ec4/src/preparser.cc
[modify] http://crrev.com/ceb92ebfdfb561d71038793c02b42aa973f55ec4/src/preparser.h
[add] http://crrev.com/ceb92ebfdfb561d71038793c02b42aa973f55ec4/test/message/for-in-loop-initializers-destructuring.js
[add] http://crrev.com/ceb92ebfdfb561d71038793c02b42aa973f55ec4/test/message/for-in-loop-initializers-destructuring.out

Project Member

Comment 70 by bugdroid1@chromium.org, Nov 25 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/481bad1ff03244396ffd2731863aaa46948f438f

commit 481bad1ff03244396ffd2731863aaa46948f438f
Author: adamk <adamk@chromium.org>
Date: Wed Nov 25 20:53:24 2015

Reland shipping of --harmony-destructuring-bind

Also fix CheckConflictingVarDeclarations() to properly handle
legacy const bindings. Without that change enabling the flag
causes code like:

  function f() { const x; var x; }

to throw an early error, rather than wait to throw the error
until f is invoked.

The previous patch ran into problems with the fuzzer; that crash was fixed
(with test coverage added) in https://crrev.com/ceb92ebfdfb561d71038793c02b42aa973f55ec4

BUG= v8:811 
LOG=y
TBR=rossberg@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1473243006

Cr-Commit-Position: refs/heads/master@{#32306}

[modify] http://crrev.com/481bad1ff03244396ffd2731863aaa46948f438f/src/flag-definitions.h
[modify] http://crrev.com/481bad1ff03244396ffd2731863aaa46948f438f/src/scopes.cc
[modify] http://crrev.com/481bad1ff03244396ffd2731863aaa46948f438f/test/mozilla/mozilla.status

Project Member

Comment 71 by bugdroid1@chromium.org, Dec 4 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b634a61d84b8793ee2939690685d4b9f7fb32b95

commit b634a61d84b8793ee2939690685d4b9f7fb32b95
Author: caitpotter88 <caitpotter88@gmail.com>
Date: Fri Dec 04 17:20:10 2015

[es6] implement destructuring assignment

Attempt #<really big number>

Parses, and lazily rewrites Destructuring Assignment expressions. The rewriting strategy involves inserting a placeholder RewritableAssignmentExpression into the AST, whose content expression can be completely rewritten at a later time.

Lazy rewriting ensures that errors do not occur due to eagerly rewriting nodes which form part of a binding pattern, thus breaking the meaning of the pattern --- or by eagerly rewriting ambiguous constructs that are not immediately known

BUG= v8:811 
LOG=Y
R=adamk@chromium.org, bmeurer@chromium.org, rossberg@chromium.org

Review URL: https://codereview.chromium.org/1309813007

Cr-Commit-Position: refs/heads/master@{#32623}

[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/ast/ast-expression-visitor.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/ast/ast-literal-reindexer.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/ast/ast-numbering.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/ast/ast.h
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/ast/prettyprinter.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/bailout-reason.h
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/bootstrapper.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/compiler/ast-graph-builder.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/compiler/ast-loop-assignment-analyzer.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/crankshaft/hydrogen.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/crankshaft/typing.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/flag-definitions.h
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/full-codegen/full-codegen.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/interpreter/bytecode-generator.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/messages.h
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/parsing/expression-classifier.h
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/parsing/parser.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/parsing/parser.h
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/parsing/pattern-rewriter.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/parsing/preparser.h
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/src/typing-asm.cc
[modify] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/test/cctest/test-parsing.cc
[add] http://crrev.com/b634a61d84b8793ee2939690685d4b9f7fb32b95/test/mjsunit/harmony/destructuring-assignment.js

Project Member

Comment 72 by bugdroid1@chromium.org, Dec 7 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a4634fd3573034da00fbe484fcb6598dffd8b95b

commit a4634fd3573034da00fbe484fcb6598dffd8b95b
Author: caitpotter88 <caitpotter88@gmail.com>
Date: Mon Dec 07 20:05:43 2015

[cleanup] remove unused Destructuring Assignment bailout reason

BUG= v8:811 
LOG=N
R=adamk@chromium.org

Review URL: https://codereview.chromium.org/1504553003

Cr-Commit-Position: refs/heads/master@{#32663}

[modify] http://crrev.com/a4634fd3573034da00fbe484fcb6598dffd8b95b/src/bailout-reason.h

Blockedon: v8:4599
Project Member

Comment 74 by 76821325...@developer.gserviceaccount.com, Dec 10 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/93d56fde702b0a965847de602698eff05e32b4ac

commit 93d56fde702b0a965847de602698eff05e32b4ac
Author: adamk <adamk@chromium.org>
Date: Thu Dec 10 13:27:41 2015

Activate destructuring assignment on ClusterFuzz

BUG= v8:811 
LOG=n

Review URL: https://codereview.chromium.org/1512153002

Cr-Commit-Position: refs/heads/master@{#32751}

[modify] http://crrev.com/93d56fde702b0a965847de602698eff05e32b4ac/src/flag-definitions.h

Project Member

Comment 76 by 76821325...@developer.gserviceaccount.com, Dec 11 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8b968b70e9319ad5ad0b2181c4d5ef3e0f03f4fa

commit 8b968b70e9319ad5ad0b2181c4d5ef3e0f03f4fa
Author: adamk <adamk@chromium.org>
Date: Fri Dec 11 01:59:28 2015

Revert of [es6] support AssignmentPattern as LHS in for-in/of loops (patchset #9 id:280001 of https://codereview.chromium.org/1508933004/ )

Reason for revert:
Hits unreachable code (found by fuzzer). Example crasher:

"for(();;);"

Original issue's description:
> [es6] support AssignmentPattern as LHS in for-in/of loops
>
> BUG= v8:811 ,  v8:4599 
> LOG=N
> R=adamk@chromium.org, rossberg@chromium.org
>
> Committed: https://crrev.com/e47bdb775564b2cd8365047425898ab4274190a6
> Cr-Commit-Position: refs/heads/master@{#32773}

TBR=rossberg@chromium.org,caitpotter88@gmail.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:811 ,  v8:4599 

Review URL: https://codereview.chromium.org/1511773009

Cr-Commit-Position: refs/heads/master@{#32774}

[modify] http://crrev.com/8b968b70e9319ad5ad0b2181c4d5ef3e0f03f4fa/src/ast/ast.cc
[modify] http://crrev.com/8b968b70e9319ad5ad0b2181c4d5ef3e0f03f4fa/src/parsing/parser.cc
[modify] http://crrev.com/8b968b70e9319ad5ad0b2181c4d5ef3e0f03f4fa/src/parsing/parser.h
[modify] http://crrev.com/8b968b70e9319ad5ad0b2181c4d5ef3e0f03f4fa/src/parsing/pattern-rewriter.cc
[modify] http://crrev.com/8b968b70e9319ad5ad0b2181c4d5ef3e0f03f4fa/src/parsing/preparser.cc
[modify] http://crrev.com/8b968b70e9319ad5ad0b2181c4d5ef3e0f03f4fa/test/cctest/test-parsing.cc
[modify] http://crrev.com/8b968b70e9319ad5ad0b2181c4d5ef3e0f03f4fa/test/mjsunit/harmony/destructuring-assignment.js

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7ab3ccb03171f28ead83a36df576843c240304fe

commit 7ab3ccb03171f28ead83a36df576843c240304fe
Author: adamk <adamk@chromium.org>
Date: Tue Jan 05 19:01:05 2016

Ship destructuring assignment

BUG= v8:811 
LOG=y
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel

Review URL: https://codereview.chromium.org/1558053002

Cr-Commit-Position: refs/heads/master@{#33124}

[modify] http://crrev.com/7ab3ccb03171f28ead83a36df576843c240304fe/src/flag-definitions.h

Project Member

Comment 83 by 76821325...@developer.gserviceaccount.com, Jan 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/6b28f294c1217fbf12e4d60e5969b439efc6f839

commit 6b28f294c1217fbf12e4d60e5969b439efc6f839
Author: caitpotter88 <caitpotter88@gmail.com>
Date: Wed Jan 13 00:40:25 2016

[parser] reject parenthesized patterns as DestructuringAssignmentTargets

http://tc39.github.io/ecma262/#sec-destructuring-assignment-static-semantics-early-errors
requires that DestructuringAssignmentTargets which do not match Pattern productions,
must return true for IsValidSimpleAssignmentTarget.

This change rejects parenthesized patterns with a SyntaxError.

BUG= v8:4662 ,  v8:811 
LOG=N
R=adamk@chromium.org, rossberg@chromium.org, nikolaos@chromium.org

Review URL: https://codereview.chromium.org/1585473002

Cr-Commit-Position: refs/heads/master@{#33254}

[modify] http://crrev.com/6b28f294c1217fbf12e4d60e5969b439efc6f839/src/parsing/parser-base.h
[modify] http://crrev.com/6b28f294c1217fbf12e4d60e5969b439efc6f839/test/cctest/test-parsing.cc

Comment 84 by adamk@chromium.org, Jan 13 2016

Blockedon: -chromium:507596
Project Member

Comment 85 by 76821325...@developer.gserviceaccount.com, Jan 14 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d19e3a21d6f2785280d84d70a7c7de89e391a949

commit d19e3a21d6f2785280d84d70a7c7de89e391a949
Author: caitpotter88 <caitpotter88@gmail.com>
Date: Thu Jan 14 03:08:39 2016

[parser] reject AssignmentElements with non-ASSIGN initializer ops

When parsing a pattern element with an assignment operator that is not
Token::ASSIGN, record a pattern error to indicate the invalid assignment target.

BUG= v8:811 ,  v8:4666 
LOG=N
R=adamk@chromium.org, rossberg@chromium.org, littledan@chromium.org

Review URL: https://codereview.chromium.org/1583863003

Cr-Commit-Position: refs/heads/master@{#33279}

[modify] http://crrev.com/d19e3a21d6f2785280d84d70a7c7de89e391a949/src/parsing/parser-base.h
[modify] http://crrev.com/d19e3a21d6f2785280d84d70a7c7de89e391a949/test/cctest/test-parsing.cc

Comment 86 by adamk@chromium.org, Feb 12 2016

Status: Fixed (was: Assigned)
Project Member

Comment 87 by bugdroid1@chromium.org, Apr 5 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f60048c5563761863463a5b685685ee1af8de04a

commit f60048c5563761863463a5b685685ee1af8de04a
Author: caitpotter88 <caitpotter88@gmail.com>
Date: Tue Apr 05 18:41:44 2016

[destructuring] don't attempt to visit contents of FunctionLiterals

The parser eagerly rewrites destructuring assignments occuring
in formal parameter initializers, because not doing so would
cause the BindingPattern rewriting to be confused and do the
wrong thing.

This change prevents this rewriting from descending into the
bodies of lazily parsed functions.

In general, it's a mistake to descend into the bodies of function
literals anyways, since they are rewritten separately on their
own time, so there is no distinction made between lazily
"throw away" eagerly parsed functions in the temporary parser
arena, or "real" eagerly parsed functions that will be compiled.

BUG= chromium:594084 ,  v8:811 
LOG=N
R=adamk@chromium.org, littledan@chromium.org

Review URL: https://codereview.chromium.org/1864553002

Cr-Commit-Position: refs/heads/master@{#35277}

[modify] https://crrev.com/f60048c5563761863463a5b685685ee1af8de04a/src/parsing/parser.cc
[add] https://crrev.com/f60048c5563761863463a5b685685ee1af8de04a/test/mjsunit/es6/regress/regress-594084.js

Project Member

Comment 88 by bugdroid1@chromium.org, May 10 2016

Labels: merge-merged-5.0
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a219ca9f68811c8f8a0d87a56fffcb41e5143c52

commit a219ca9f68811c8f8a0d87a56fffcb41e5143c52
Author: Adam Klein <adamk@chromium.org>
Date: Tue May 10 17:48:48 2016

Version 5.0.71.48 (cherry-pick)

Merged f60048c5563761863463a5b685685ee1af8de04a

[destructuring] don't attempt to visit contents of FunctionLiterals

BUG= chromium:594084 , v8:811 
LOG=N
R=littledan@chromium.org

Review URL: https://codereview.chromium.org/1969443002 .

Cr-Commit-Position: refs/branch-heads/5.0@{#57}
Cr-Branched-From: ad16e6c2cbd2c6b0f2e8ff944ac245561c682ac2-refs/heads/5.0.71@{#1}
Cr-Branched-From: bd9df50d75125ee2ad37b3d92c8f50f0a8b5f030-refs/heads/master@{#34215}

[modify] https://crrev.com/a219ca9f68811c8f8a0d87a56fffcb41e5143c52/include/v8-version.h
[modify] https://crrev.com/a219ca9f68811c8f8a0d87a56fffcb41e5143c52/src/parsing/parser.cc
[add] https://crrev.com/a219ca9f68811c8f8a0d87a56fffcb41e5143c52/test/mjsunit/es6/regress/regress-594084.js

Blockedon: -4488

Comment 90 by adamk@chromium.org, Dec 27 2016

Blockedon: -4407
Project Member

Comment 91 by bugdroid1@chromium.org, Apr 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/68235eb936d82a9867ecf46262703382350cc04b

commit 68235eb936d82a9867ecf46262703382350cc04b
Author: Caitlin Potter <caitp@igalia.com>
Date: Mon Apr 24 20:27:37 2017

[parser] don't treat new.target as a valid DestructuringAssignmentTarget

BUG= v8:6291 ,  v8:811 
R=marja@chromium.org, vogelheim@chromium.org

Change-Id: Icf18b1cba8562aab87d233d383eb1d73a8e6aa9d
Reviewed-on: https://chromium-review.googlesource.com/485059
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Reviewed-by: Daniel Vogelheim <vogelheim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44818}
[modify] https://crrev.com/68235eb936d82a9867ecf46262703382350cc04b/src/parsing/parser-base.h
[modify] https://crrev.com/68235eb936d82a9867ecf46262703382350cc04b/src/parsing/parser.h
[modify] https://crrev.com/68235eb936d82a9867ecf46262703382350cc04b/src/parsing/preparser.h
[modify] https://crrev.com/68235eb936d82a9867ecf46262703382350cc04b/test/mjsunit/es6/destructuring-assignment.js

Project Member

Comment 92 by bugdroid1@chromium.org, Apr 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/56e07b4a8ce547c35bc3f6b4a64757f56f433171

commit 56e07b4a8ce547c35bc3f6b4a64757f56f433171
Author: Caitlin Potter <caitp@igalia.com>
Date: Mon Apr 24 20:54:36 2017

[parser] don't treat SuperCall as a valid DestructuringAssignmentTarget

BUG= v8:6291 ,  v8:811 
R=marja@chromium.org, vogelheim@chromium.org

Change-Id: I978ea446d7b42092592b0a3ae3c99626e36d40fd
Reviewed-on: https://chromium-review.googlesource.com/485099
Commit-Queue: Caitlin Potter <caitp@igalia.com>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Reviewed-by: Daniel Vogelheim <vogelheim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#44819}
[modify] https://crrev.com/56e07b4a8ce547c35bc3f6b4a64757f56f433171/src/parsing/parser-base.h
[modify] https://crrev.com/56e07b4a8ce547c35bc3f6b4a64757f56f433171/test/mjsunit/es6/destructuring-assignment.js

Sign in to add a comment