Non-destructuring default parameters
This commit is contained in:
committed by
Richard van Velzen
parent
7f3dbb6df7
commit
084437bc6d
17
lib/ast.js
17
lib/ast.js
@@ -422,6 +422,13 @@ var AST_ArrowParametersOrSeq = DEFNODE("ArrowParametersOrSeq", "expressions", {
|
||||
is_array: true,
|
||||
names: ex.elements.map(to_fun_args)
|
||||
});
|
||||
} else if (ex instanceof AST_Assign && ex.left instanceof AST_Symbol) {
|
||||
return new AST_SymbolFunarg({
|
||||
name: ex.left.name,
|
||||
default: ex.right,
|
||||
start: ex.start,
|
||||
end: ex.end
|
||||
});
|
||||
} else {
|
||||
croak("Invalid function parameter", ex.start.line, ex.start.col);
|
||||
}
|
||||
@@ -1026,8 +1033,16 @@ var AST_SymbolConst = DEFNODE("SymbolConst", null, {
|
||||
$documentation: "A constant declaration"
|
||||
}, AST_SymbolDeclaration);
|
||||
|
||||
var AST_SymbolFunarg = DEFNODE("SymbolFunarg", null, {
|
||||
var AST_SymbolFunarg = DEFNODE("SymbolFunarg", "default", {
|
||||
$documentation: "Symbol naming a function argument",
|
||||
$propdoc: {
|
||||
default: "[AST_Expression] The default for this parameter. For example, `= 6`"
|
||||
},
|
||||
_walk: function (visitor) {
|
||||
return visitor._visit(this, function() {
|
||||
if (this.default) this.default._walk(visitor);
|
||||
});
|
||||
}
|
||||
}, AST_SymbolVar);
|
||||
|
||||
var AST_SymbolDefun = DEFNODE("SymbolDefun", null, {
|
||||
|
||||
Reference in New Issue
Block a user