LGTM
Beautiful!
https://codereview.chromium.org/1146683002/diff/1/src/pattern-rewriter.cc
File src/pattern-rewriter.cc (right):
https://codereview.chromium.org/1146683002/diff/1/src/pattern-rewriter.cc#newcode210
src/pattern-rewriter.cc:210: Variable*
Parser::PatternRewriter::CreateTemp(Expression* value) {
CreateTempVar maybe?
https://codereview.chromium.org/1146683002/diff/1/src/pattern-rewriter.cc#newcode245
src/pattern-rewriter.cc:245: DCHECK(node->op() == Token::ASSIGN);
Maybe add a comment explaining the desugaring
let {<pattern> = init} = <current_value>
becomes
temp = <current_value>
<pattern> = temp === undefined ? init : temp
https://codereview.chromium.org/1146683002/diff/1/src/preparser.h
File src/preparser.h (right):
https://codereview.chromium.org/1146683002/diff/1/src/preparser.h#newcode2909
src/preparser.h:2909: classifier->RecordBindingPatternError(
Just curious... Is the reason why you are not doing a
RecordAssignmentPatternError here because assignment patterns are n ot
yet implemented?
https://codereview.chromium.org/1146683002/diff/1/test/cctest/test-parsing.cc
File test/cctest/test-parsing.cc (right):
https://codereview.chromium.org/1146683002/diff/1/test/cctest/test-parsing.cc#newcode6366
test/cctest/test-parsing.cc:6366: "x",
this is a duplicate of the next line
https://codereview.chromium.org/1146683002/diff/1/test/mjsunit/harmony/destructuring.js
File test/mjsunit/harmony/destructuring.js (right):
https://codereview.chromium.org/1146683002/diff/1/test/mjsunit/harmony/destructuring.js#newcode54
test/mjsunit/harmony/destructuring.js:54:
-1 newline
https://codereview.chromium.org/1146683002/diff/1/test/mjsunit/harmony/destructuring.js#newcode57
test/mjsunit/harmony/destructuring.js:57: for(var {z = 3} = {}; z != 0;
z--) {
ws
https://codereview.chromium.org/1146683002/diff/1/test/mjsunit/harmony/destructuring.js#newcode254
test/mjsunit/harmony/destructuring.js:254:
Did you want to add tests for
let {x, x} = {x: 1};
and some more variants of that:
let {x, x = 2} = {x: 1};
let {x = (function() { x = 2; })()} = {}; // error
let {x = (function() { x = 2; })()} = {x: 1}; // no error
https://codereview.chromium.org/1146683002/
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.