aboutsummaryrefslogtreecommitdiff
path: root/lib/scope.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/scope.js')
-rw-r--r--lib/scope.js14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/scope.js b/lib/scope.js
index ae792a0a..55d1eff1 100644
--- a/lib/scope.js
+++ b/lib/scope.js
@@ -233,7 +233,7 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options){
if (isModified(node, 0)) {
sym.modified = true;
}
- node.reference();
+ node.reference(options);
return true;
}
});
@@ -264,13 +264,18 @@ AST_Lambda.DEFMETHOD("init_scope_vars", function(){
this.variables.set(symbol.name, def);
});
-AST_SymbolRef.DEFMETHOD("reference", function() {
+AST_SymbolRef.DEFMETHOD("reference", function(options) {
var def = this.definition();
def.references.push(this);
var s = this.scope;
while (s) {
push_uniq(s.enclosed, def);
if (s === def.scope) break;
+ if (options.keep_fnames) {
+ s.variables.each(function(d) {
+ push_uniq(def.scope.enclosed, d);
+ });
+ }
s = s.parent_scope;
}
this.frame = this.scope.nesting - def.scope.nesting;
@@ -338,11 +343,6 @@ AST_Function.DEFMETHOD("next_mangled", function(options, def){
}
});
-AST_Scope.DEFMETHOD("references", function(sym){
- if (sym instanceof AST_Symbol) sym = sym.definition();
- return this.enclosed.indexOf(sym) < 0 ? null : sym;
-});
-
AST_Symbol.DEFMETHOD("unmangleable", function(options){
return this.definition().unmangleable(options);
});