A little refactoring. Add a new function to get all symbols in a destructuring.
This commit is contained in:
committed by
Richard van Velzen
parent
ceebc466b9
commit
824ecfb8a2
26
lib/ast.js
26
lib/ast.js
@@ -445,15 +445,13 @@ var AST_Lambda = DEFNODE("Lambda", "name argnames uses_arguments", {
|
||||
},
|
||||
args_as_names: function () {
|
||||
var out = [];
|
||||
this.walk(new TreeWalker(function (parm) {
|
||||
var that = this;
|
||||
if (parm instanceof AST_SymbolFunarg) {
|
||||
out.push(parm);
|
||||
for (var i = 0; i < this.argnames.length; i++) {
|
||||
if (this.argnames[i] instanceof AST_Destructuring) {
|
||||
out = out.concat(this.argnames[i].all_symbols());
|
||||
} else {
|
||||
out.push(this.argnames[i]);
|
||||
}
|
||||
if (parm instanceof AST_Expansion) {
|
||||
out.push(parm.symbol);
|
||||
}
|
||||
}));
|
||||
}
|
||||
return out;
|
||||
},
|
||||
_walk: function(visitor) {
|
||||
@@ -492,6 +490,18 @@ var AST_Destructuring = DEFNODE("Destructuring", "names is_array", {
|
||||
name._walk(visitor);
|
||||
});
|
||||
});
|
||||
},
|
||||
all_symbols: function() {
|
||||
var out = [];
|
||||
this.walk(new TreeWalker(function (node) {
|
||||
if (node instanceof AST_Symbol) {
|
||||
out.push(node);
|
||||
}
|
||||
if (node instanceof AST_Expansion) {
|
||||
out.push(node.symbol);
|
||||
}
|
||||
}));
|
||||
return out;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user