@@ -6562,10 +6562,25 @@ merge(Compressor.prototype, {
|
|||||||
if (def.orig.length > 1) return null;
|
if (def.orig.length > 1) return null;
|
||||||
if (def.assignments > 0) return false;
|
if (def.assignments > 0) return false;
|
||||||
if (def.name == name) return def;
|
if (def.name == name) return def;
|
||||||
if (name == "await" && is_async(fn)) return false;
|
var forbidden;
|
||||||
if (name == "yield" && is_generator(fn)) return false;
|
switch (name) {
|
||||||
|
case "await":
|
||||||
|
forbidden = is_async;
|
||||||
|
break;
|
||||||
|
case "yield":
|
||||||
|
forbidden = is_generator;
|
||||||
|
break;
|
||||||
|
}
|
||||||
return all(def.references, function(ref) {
|
return all(def.references, function(ref) {
|
||||||
return ref.scope.find_variable(name) === sym;
|
var scope = ref.scope;
|
||||||
|
if (scope.find_variable(name) !== sym) return false;
|
||||||
|
if (forbidden) {
|
||||||
|
scope = scope.resolve();
|
||||||
|
do {
|
||||||
|
if (forbidden(scope)) return false;
|
||||||
|
} while ((scope = scope.parent_scope.resolve()) && scope !== fn);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}) && def;
|
}) && def;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1989,3 +1989,37 @@ issue_5032_webkit: {
|
|||||||
]
|
]
|
||||||
node_version: ">=8"
|
node_version: ">=8"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_5034: {
|
||||||
|
options = {
|
||||||
|
functions: true,
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
(function() {
|
||||||
|
var await = function f() {
|
||||||
|
return async function() {
|
||||||
|
return f;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
await()().then(function(value) {
|
||||||
|
console.log(value === await ? "PASS" : "FAIL");
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
(function() {
|
||||||
|
var await = function f() {
|
||||||
|
return async function() {
|
||||||
|
return f;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
await()().then(function(value) {
|
||||||
|
console.log(value === await ? "PASS" : "FAIL");
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=8"
|
||||||
|
}
|
||||||
|
|||||||
@@ -1216,3 +1216,33 @@ issue_5032_webkit: {
|
|||||||
]
|
]
|
||||||
node_version: ">=4"
|
node_version: ">=4"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
issue_5034: {
|
||||||
|
options = {
|
||||||
|
functions: true,
|
||||||
|
reduce_vars: true,
|
||||||
|
unused: true,
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
console.log(function() {
|
||||||
|
var yield = function f() {
|
||||||
|
return function*() {
|
||||||
|
return f;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return yield()().next().value === yield;
|
||||||
|
}() ? "PASS" : "FAIL");
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
console.log(function() {
|
||||||
|
var yield = function f() {
|
||||||
|
return function*() {
|
||||||
|
return f;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return yield()().next().value === yield;
|
||||||
|
}() ? "PASS" : "FAIL");
|
||||||
|
}
|
||||||
|
expect_stdout: "PASS"
|
||||||
|
node_version: ">=4"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user