Destructuring: Fix array unpacking assignments with holes on RHS (#9412)
This fixes an issue where destructuring assignments eligible for the "array unpacking" optimization would fail to compile when the array literal on the right-hand side of the expression contained holes. Example input: ```js [a, b] = [, 2]; ; // Avoid completion record special case ``` The error message was `Property right of AssignmentExpression expected node to be of a type ["Expression"] but instead got null`. Now the above code compiles to: ```js a = void 0; b = 2; ; ``` This PR also adds a couple of related test cases that were missing, to ensure the change doesn't regress them: * Normal assignment expression with unpacking * Declaration with unpacking and a hole on RHS
This commit is contained in:
committed by
Nicolò Ribaudo
parent
72161a64b2
commit
f7bfc774ba
@@ -83,7 +83,11 @@ export default declare((api, options) => {
|
||||
|
||||
if (op) {
|
||||
node = t.expressionStatement(
|
||||
t.assignmentExpression(op, id, t.cloneNode(init)),
|
||||
t.assignmentExpression(
|
||||
op,
|
||||
id,
|
||||
t.cloneNode(init) || this.scope.buildUndefinedNode(),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
node = t.variableDeclaration(this.kind, [
|
||||
|
||||
Reference in New Issue
Block a user