@@ -3209,10 +3209,15 @@ merge(Compressor.prototype, {
|
||||
if (!value) return make_node(AST_Undefined, self);
|
||||
value.walk(new TreeWalker(function(node) {
|
||||
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;
|
||||
return true;
|
||||
}
|
||||
|
||||
function matches(ref) {
|
||||
return ref && ref.scope.parent_scope === fn.parent_scope;
|
||||
}
|
||||
}));
|
||||
if (value !== self) value = best_of(compressor, value, self);
|
||||
} else {
|
||||
|
||||
@@ -365,3 +365,52 @@ issue_2097: {
|
||||
}
|
||||
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