@@ -3209,10 +3209,15 @@ merge(Compressor.prototype, {
|
|||||||
if (!value) return make_node(AST_Undefined, self);
|
if (!value) return make_node(AST_Undefined, self);
|
||||||
value.walk(new TreeWalker(function(node) {
|
value.walk(new TreeWalker(function(node) {
|
||||||
if (value === self) return true;
|
if (value === self) return true;
|
||||||
if (node instanceof AST_SymbolRef && exp.variables.has(node.name)) {
|
if (node instanceof AST_SymbolRef && matches(node.scope.find_variable(node))
|
||||||
|
|| node instanceof AST_This && matches(node)) {
|
||||||
value = self;
|
value = self;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function matches(ref) {
|
||||||
|
return ref && ref.scope.parent_scope === fn.parent_scope;
|
||||||
|
}
|
||||||
}));
|
}));
|
||||||
if (value !== self) value = best_of(compressor, value, self);
|
if (value !== self) value = best_of(compressor, value, self);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -365,3 +365,52 @@ issue_2097: {
|
|||||||
}
|
}
|
||||||
expect_stdout: "1"
|
expect_stdout: "1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_2101: {
|
||||||
|
options = {
|
||||||
|
inline: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
a = {};
|
||||||
|
console.log(function() {
|
||||||
|
return function() {
|
||||||
|
return this.a;
|
||||||
|
}();
|
||||||
|
}() === function() {
|
||||||
|
return a;
|
||||||
|
}());
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
a = {};
|
||||||
|
console.log(function() {
|
||||||
|
return this.a;
|
||||||
|
}() === a);
|
||||||
|
}
|
||||||
|
expect_stdout: "true"
|
||||||
|
}
|
||||||
|
|
||||||
|
inner_ref: {
|
||||||
|
options = {
|
||||||
|
inline: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log(function(a) {
|
||||||
|
return function() {
|
||||||
|
return a;
|
||||||
|
}();
|
||||||
|
}(1), function(a) {
|
||||||
|
return function(a) {
|
||||||
|
return a;
|
||||||
|
}();
|
||||||
|
}(2));
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log(function(a) {
|
||||||
|
return a;
|
||||||
|
}(1), function(a) {
|
||||||
|
return a;
|
||||||
|
}());
|
||||||
|
}
|
||||||
|
expect_stdout: "1 undefined"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user