aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/scope.js4
-rw-r--r--test/compress/issue-1431.js29
2 files changed, 31 insertions, 2 deletions
diff --git a/lib/scope.js b/lib/scope.js
index 0fe8d83a..d5cadd34 100644
--- a/lib/scope.js
+++ b/lib/scope.js
@@ -268,12 +268,12 @@ AST_SymbolRef.DEFMETHOD("reference", function(options) {
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) {
+ s.functions.each(function(d) {
push_uniq(def.scope.enclosed, d);
});
}
+ if (s === def.scope) break;
s = s.parent_scope;
}
});
diff --git a/test/compress/issue-1431.js b/test/compress/issue-1431.js
index 731ebba8..9493fd37 100644
--- a/test/compress/issue-1431.js
+++ b/test/compress/issue-1431.js
@@ -1,3 +1,32 @@
+level_zero: {
+ options = {
+ keep_fnames: true
+ }
+ mangle = {
+ keep_fnames: true
+ }
+ input: {
+ function f(x) {
+ function n(a) {
+ return a * a;
+ }
+ return function() {
+ return x;
+ };
+ }
+ }
+ expect: {
+ function f(r) {
+ function n(n) {
+ return n * n;
+ }
+ return function() {
+ return r;
+ };
+ }
+ }
+}
+
level_one: {
options = {
keep_fnames: true