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.

Reply via email to