12
lib/scope.js
12
lib/scope.js
@@ -68,8 +68,8 @@ SymbolDef.prototype = {
|
|||||||
if (this.global && cache && cache.has(this.name)) {
|
if (this.global && cache && cache.has(this.name)) {
|
||||||
this.mangled_name = cache.get(this.name);
|
this.mangled_name = cache.get(this.name);
|
||||||
} else if (!this.mangled_name && !this.unmangleable(options)) {
|
} else if (!this.mangled_name && !this.unmangleable(options)) {
|
||||||
var def;
|
var def = this.redefined();
|
||||||
if (def = this.redefined()) {
|
if (def) {
|
||||||
this.mangled_name = def.mangled_name || def.name;
|
this.mangled_name = def.mangled_name || def.name;
|
||||||
} else {
|
} else {
|
||||||
this.mangled_name = next_mangled_name(this.scope, options, this);
|
this.mangled_name = next_mangled_name(this.scope, options, this);
|
||||||
@@ -84,8 +84,8 @@ SymbolDef.prototype = {
|
|||||||
if (!scope) return;
|
if (!scope) return;
|
||||||
var def = scope.variables.get(this.name);
|
var def = scope.variables.get(this.name);
|
||||||
if (!def && scope instanceof AST_Toplevel) def = scope.globals.get(this.name);
|
if (!def && scope instanceof AST_Toplevel) def = scope.globals.get(this.name);
|
||||||
if (def === this) return;
|
if (!def || def === this) return;
|
||||||
return def;
|
return def.redefined() || def;
|
||||||
},
|
},
|
||||||
unmangleable: function(options) {
|
unmangleable: function(options) {
|
||||||
return this.global && !options.toplevel
|
return this.global && !options.toplevel
|
||||||
@@ -274,8 +274,8 @@ AST_Toplevel.DEFMETHOD("figure_out_scope", function(options) {
|
|||||||
var old_def = node.thedef;
|
var old_def = node.thedef;
|
||||||
var new_def = scope.find_variable(name);
|
var new_def = scope.find_variable(name);
|
||||||
if (new_def) {
|
if (new_def) {
|
||||||
var redef;
|
var redef = new_def.redefined();
|
||||||
while (redef = new_def.redefined()) new_def = redef;
|
if (redef) new_def = redef;
|
||||||
} else {
|
} else {
|
||||||
new_def = self.globals.get(name);
|
new_def = self.globals.get(name);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -747,3 +747,32 @@ issue_4193: {
|
|||||||
}
|
}
|
||||||
expect_stdout: true
|
expect_stdout: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_4195: {
|
||||||
|
mangle = {
|
||||||
|
ie8: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log(function f(a) {
|
||||||
|
(function a() {
|
||||||
|
{
|
||||||
|
const b = f, a = 0;
|
||||||
|
b;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
a && f;
|
||||||
|
}());
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log(function f(o) {
|
||||||
|
(function o() {
|
||||||
|
{
|
||||||
|
const n = f, o = 0;
|
||||||
|
n;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
o && f;
|
||||||
|
}());
|
||||||
|
}
|
||||||
|
expect_stdout: "undefined"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user