fix corner cases with arrow functions (#4688)

fixes #4687
This commit is contained in:
Alex Lam S.L
2021-02-25 01:01:45 +00:00
committed by GitHub
parent 72805ea73a
commit 822b1da5d2
3 changed files with 230 additions and 11 deletions

View File

@@ -704,7 +704,7 @@ issue_4666: {
node_version: ">=4"
}
issue_4685: {
issue_4685_1: {
options = {
collapse_vars: true,
unused: true,
@@ -724,3 +724,82 @@ issue_4685: {
expect_stdout: "PASS"
node_version: ">=4"
}
issue_4685_2: {
options = {
reduce_vars: true,
unused: true,
}
input: {
new function(f) {
if (f() !== this)
console.log("PASS");
}(() => {
if (console)
return this;
});
}
expect: {
new function(f) {
if (f() !== this)
console.log("PASS");
}(() => {
if (console)
return this;
});
}
expect_stdout: "PASS"
node_version: ">=4"
}
issue_4687_1: {
options = {
collapse_vars: true,
unused: true,
}
input: {
new function() {
console.log(function(f) {
return f() === this;
}(() => this) || "PASS");
}
}
expect: {
new function() {
console.log(function(f) {
return f() === this;
}(() => this) || "PASS");
}
}
expect_stdout: "PASS"
node_version: ">=4"
}
issue_4687_2: {
options = {
reduce_vars: true,
unused: true,
}
input: {
new function() {
console.log(function(f) {
return f() === this;
}(() => {
if (console)
return this;
}) || "PASS");
}
}
expect: {
new function() {
console.log(function(f) {
return f() === this;
}(() => {
if (console)
return this;
}) || "PASS");
}
}
expect_stdout: "PASS"
node_version: ">=4"
}

View File

@@ -615,3 +615,135 @@ issue_4683: {
expect_stdout: "PASS"
node_version: ">=4"
}
issue_4685_1: {
options = {
collapse_vars: true,
unused: true,
}
input: {
"use strict";
new class {
f() {
(function(g) {
if (g() !== this)
console.log("PASS");
})(() => this);
}
}().f();
}
expect: {
"use strict";
new class {
f() {
(function(g) {
if (g() !== this)
console.log("PASS");
})(() => this);
}
}().f();
}
expect_stdout: "PASS"
node_version: ">=4"
}
issue_4685_2: {
options = {
reduce_vars: true,
unused: true,
}
input: {
"use strict";
new class {
f() {
(function(g) {
if (g() !== this)
console.log("PASS");
})(() => {
if (console)
return this;
});
}
}().f();
}
expect: {
"use strict";
new class {
f() {
(function(g) {
if (g() !== this)
console.log("PASS");
})(() => {
if (console)
return this;
});
}
}().f();
}
expect_stdout: "PASS"
node_version: ">=4"
}
issue_4687_1: {
options = {
collapse_vars: true,
unused: true,
}
input: {
"use strict";
new class {
f() {
console.log(function(g) {
return g() === this;
}(() => this) || "PASS");
}
}().f();
}
expect: {
"use strict";
new class {
f() {
console.log(function(g) {
return g() === this;
}(() => this) || "PASS");
}
}().f();
}
expect_stdout: "PASS"
node_version: ">=4"
}
issue_4687_2: {
options = {
reduce_vars: true,
unused: true,
}
input: {
"use strict";
new class {
f() {
console.log(function(g) {
return g() === this;
}(() => {
if (console)
return this;
}) || "PASS");
}
}().f();
}
expect: {
"use strict";
new class {
f() {
console.log(function(g) {
return g() === this;
}(() => {
if (console)
return this;
}) || "PASS");
}
}().f();
}
expect_stdout: "PASS"
node_version: ">=4"
}