Open
Description
I suspect that the assignment_expression in following piece of code is parsed incorrectly:
let o = { x: "s", y: 0 };
({x: v, y: w} = o);
Here's the output that I get for it:
assignment_expression text: "{x: v, y: w} = o"
object_pattern text: "{x: v, y: w}"
{ text: "{"
pair_pattern text: "x: v"
property_identifier text: "x"
: text: ":"
identifier text: "v"
, text: ","
pair_pattern text: "y: w"
property_identifier text: "y"
: text: ":"
identifier text: "w"
} text: "}"
= text: "="
identifier text: "o"
If my suspicion is correct, then the pattern underneath the assignment should be an object_assignment_pattern
rather than an object_pattern
. What do you think?
Note: Related to this, I think that the "circumstances" in which the grammar of an AssignmentPattern (including an ObjectAssignmentPattern) applies isn't clear enough in the ECMA spec, so I create this issue there.