Allow AST_DefaultAssign as parameter (#1778)
This may be the case for parsing arrow functions, as left side expressions are converted to destructuring patterns before being converted to parameters.
This commit is contained in:
committed by
Alex Lam S.L
parent
17f0cc359f
commit
603d92effc
@@ -468,6 +468,9 @@ var AST_ArrowParametersOrSeq = DEFNODE("ArrowParametersOrSeq", "expressions", {
|
|||||||
}), default_seen_above);
|
}), default_seen_above);
|
||||||
} else if (ex instanceof AST_Assign) {
|
} else if (ex instanceof AST_Assign) {
|
||||||
return insert_default(to_fun_args(ex.left, undefined, undefined, ex.right), default_seen_above);
|
return insert_default(to_fun_args(ex.left, undefined, undefined, ex.right), default_seen_above);
|
||||||
|
} else if (ex instanceof AST_DefaultAssign) {
|
||||||
|
ex.left = to_fun_args(ex.left, 0, [ex.left]);
|
||||||
|
return ex;
|
||||||
} else {
|
} else {
|
||||||
croak("Invalid function parameter", ex.start.line, ex.start.col);
|
croak("Invalid function parameter", ex.start.line, ex.start.col);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -314,13 +314,25 @@ default_assign: {
|
|||||||
function f(a, b = 3) {
|
function f(a, b = 3) {
|
||||||
console.log(a);
|
console.log(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
g = ([[] = 123]) => {};
|
g = ([[] = 123]) => {};
|
||||||
|
h = ([[x, y, z] = [4, 5, 6]] = []) => {};
|
||||||
|
|
||||||
|
function i([[x, y, z] = [4, 5, 6]] = []) {
|
||||||
|
console.log(b);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
expect: {
|
expect: {
|
||||||
function f(a) {
|
function f(a) {
|
||||||
console.log(a);
|
console.log(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
g = ([[] = 123]) => {};
|
g = ([[] = 123]) => {};
|
||||||
|
h = ([[x, y, z] = [4, 5, 6]] = []) => {};
|
||||||
|
|
||||||
|
function i([[x, y, z] = [4, 5, 6]] = []) {
|
||||||
|
console.log(b);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user