fix escape analysis for AST_Throw (#2564)
This commit is contained in:
@@ -4621,3 +4621,166 @@ issue_2560_2: {
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
issue_2560_3: {
|
||||
options = {
|
||||
reduce_funcs: true,
|
||||
reduce_vars: true,
|
||||
toplevel: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
function main() {
|
||||
var thing = baz();
|
||||
if (thing !== (thing = baz()))
|
||||
console.log("FAIL");
|
||||
else
|
||||
console.log("PASS");
|
||||
}
|
||||
function baz() {
|
||||
try {
|
||||
throw foo;
|
||||
} catch (bar) {
|
||||
return bar;
|
||||
}
|
||||
}
|
||||
function foo() {}
|
||||
main();
|
||||
}
|
||||
expect: {
|
||||
function baz() {
|
||||
try {
|
||||
throw foo;
|
||||
} catch (bar) {
|
||||
return bar;
|
||||
}
|
||||
}
|
||||
function foo() {}
|
||||
(function() {
|
||||
var thing = baz();
|
||||
if (thing !== (thing = baz()))
|
||||
console.log("FAIL");
|
||||
else
|
||||
console.log("PASS");
|
||||
})();
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
issue_2560_4: {
|
||||
options = {
|
||||
reduce_funcs: true,
|
||||
reduce_vars: true,
|
||||
toplevel: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
function main() {
|
||||
var thing = baz();
|
||||
if (thing !== (thing = baz()))
|
||||
console.log("PASS");
|
||||
else
|
||||
console.log("FAIL");
|
||||
}
|
||||
function baz(s) {
|
||||
function foo() {}
|
||||
function bar() {}
|
||||
return s ? foo : bar;
|
||||
}
|
||||
main();
|
||||
}
|
||||
expect: {
|
||||
function baz(s) {
|
||||
return s ? function() {} : function() {};
|
||||
}
|
||||
(function() {
|
||||
var thing = baz();
|
||||
if (thing !== (thing = baz()))
|
||||
console.log("PASS");
|
||||
else
|
||||
console.log("FAIL");
|
||||
})();
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
issue_2560_5: {
|
||||
options = {
|
||||
reduce_funcs: true,
|
||||
reduce_vars: true,
|
||||
toplevel: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
function main() {
|
||||
var thing = baz();
|
||||
if (thing !== (thing = baz()))
|
||||
console.log("PASS");
|
||||
else
|
||||
console.log("FAIL");
|
||||
}
|
||||
function baz() {
|
||||
function foo() {}
|
||||
function bar() {}
|
||||
return foo, bar;
|
||||
}
|
||||
main();
|
||||
}
|
||||
expect: {
|
||||
function baz() {
|
||||
return function() {}, function() {};
|
||||
}
|
||||
(function() {
|
||||
var thing = baz();
|
||||
if (thing !== (thing = baz()))
|
||||
console.log("PASS");
|
||||
else
|
||||
console.log("FAIL");
|
||||
})();
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
issue_2560_6: {
|
||||
options = {
|
||||
reduce_funcs: true,
|
||||
reduce_vars: true,
|
||||
toplevel: true,
|
||||
unused: true,
|
||||
}
|
||||
input: {
|
||||
function main() {
|
||||
var thing = baz();
|
||||
if (thing !== (thing = baz()))
|
||||
console.log("PASS");
|
||||
else
|
||||
console.log("FAIL");
|
||||
}
|
||||
function baz() {
|
||||
function foo() {}
|
||||
try {
|
||||
throw foo;
|
||||
} catch (bar) {
|
||||
return bar;
|
||||
}
|
||||
}
|
||||
main();
|
||||
}
|
||||
expect: {
|
||||
function baz() {
|
||||
try {
|
||||
throw function() {};
|
||||
} catch (bar) {
|
||||
return bar;
|
||||
}
|
||||
}
|
||||
(function() {
|
||||
var thing = baz();
|
||||
if (thing !== (thing = baz()))
|
||||
console.log("PASS");
|
||||
else
|
||||
console.log("FAIL");
|
||||
})();
|
||||
}
|
||||
expect_stdout: "PASS"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user