}
if (node instanceof AST_SymbolLambda) {
var def = node.thedef;
- redefine(node, node.scope.parent_scope.resolve());
- if (typeof node.thedef.init !== "undefined") {
+ if (!redefine(node, node.scope.parent_scope.resolve())) {
+ delete def.defun;
+ } else if (typeof node.thedef.init !== "undefined") {
node.thedef.init = false;
} else if (def.init) {
node.thedef.init = def.init;
var old_def = node.thedef;
if (!all(old_def.orig, function(sym) {
return !(sym instanceof AST_SymbolConst || sym instanceof AST_SymbolLet);
- })) return;
+ })) return false;
var new_def = scope.find_variable(name);
if (new_def) {
var redef = new_def.redefined();
node.reference(options);
});
if (new_def.undeclared) self.variables.set(name, new_def);
+ return true;
}
});
expect_stdout: "PASS"
node_version: ">=4"
}
+
+issue_4531_1: {
+ mangle = {
+ ie8: true,
+ toplevel: true,
+ }
+ input: {
+ "use strict";
+ var a;
+ console.log(function a() {
+ let a;
+ var b;
+ }());
+ }
+ expect: {
+ "use strict";
+ var o;
+ console.log(function o() {
+ let o;
+ var t;
+ }());
+ }
+ expect_stdout: "undefined"
+ node_version: ">=4"
+}
+
+issue_4531_2: {
+ options = {
+ evaluate: true,
+ ie8: true,
+ toplevel: true,
+ }
+ mangle = {
+ ie8: true,
+ toplevel: true,
+ }
+ input: {
+ "use strict";
+ var a = console;
+ console.log(typeof a, function a() {
+ let { [console]: a } = 0 && a;
+ var b = console;
+ while (!b);
+ }());
+ }
+ expect: {
+ "use strict";
+ var o = console;
+ console.log(typeof o, function o() {
+ let { [console]: o } = 0;
+ var e = console;
+ while (!e);
+ }());
+ }
+ expect_stdout: "object undefined"
+ node_version: ">=6"
+}