Allow AST_DefaultAssign as parameter

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:
Anthony Van de Gejuchte 2017-04-03 12:49:10 +02:00
parent 17f0cc359f
commit 44d5557827
2 changed files with 15 additions and 0 deletions

View File

@ -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);
} }

View File

@ -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);
};
} }
} }