More tests for #1034 - declare vars after return
This commit is contained in:
parent
ad3288190a
commit
d7cd5f3bca
|
|
@ -1,4 +1,4 @@
|
||||||
non_hoisted_function_def_after_return: {
|
non_hoisted_function_after_return: {
|
||||||
options = {
|
options = {
|
||||||
hoist_funs: false, dead_code: true, conditionals: true, comparisons: true,
|
hoist_funs: false, dead_code: true, conditionals: true, comparisons: true,
|
||||||
evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true,
|
evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true,
|
||||||
|
|
@ -34,3 +34,104 @@ non_hoisted_function_def_after_return: {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
non_hoisted_function_after_return_2a: {
|
||||||
|
options = {
|
||||||
|
hoist_funs: false, dead_code: true, conditionals: true, comparisons: true,
|
||||||
|
evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true,
|
||||||
|
if_return: true, join_vars: true, cascade: true, side_effects: true,
|
||||||
|
collapse_vars: false
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
function foo(x) {
|
||||||
|
if (x) {
|
||||||
|
return bar(1);
|
||||||
|
var a = not_called(1);
|
||||||
|
} else {
|
||||||
|
return bar(2);
|
||||||
|
var b = not_called(2);
|
||||||
|
}
|
||||||
|
var c = bar(3);
|
||||||
|
function bar(x) { return 7 - x; }
|
||||||
|
function nope() {}
|
||||||
|
return b || c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
// NOTE: Output is correct, but suboptimal. Not a regression. Can be improved in future.
|
||||||
|
// This output is run through non_hoisted_function_after_return_2b with same flags.
|
||||||
|
function foo(x) {
|
||||||
|
if (x) {
|
||||||
|
return bar(1);
|
||||||
|
} else {
|
||||||
|
return bar(2);
|
||||||
|
var b;
|
||||||
|
}
|
||||||
|
var c = bar(3);
|
||||||
|
function bar(x) {
|
||||||
|
return 7 - x;
|
||||||
|
}
|
||||||
|
return b || c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect_warnings: [
|
||||||
|
"WARN: Dropping unreachable code [test/compress/issue-1034.js:48,16]",
|
||||||
|
"WARN: Declarations in unreachable code! [test/compress/issue-1034.js:48,16]",
|
||||||
|
"WARN: Dropping unreachable code [test/compress/issue-1034.js:51,16]",
|
||||||
|
"WARN: Declarations in unreachable code! [test/compress/issue-1034.js:51,16]",
|
||||||
|
"WARN: Dropping unused variable a [test/compress/issue-1034.js:48,20]",
|
||||||
|
"WARN: Dropping unused function nope [test/compress/issue-1034.js:55,21]"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
non_hoisted_function_after_return_2b: {
|
||||||
|
options = {
|
||||||
|
hoist_funs: false, dead_code: true, conditionals: true, comparisons: true,
|
||||||
|
evaluate: true, booleans: true, loops: true, unused: true, keep_fargs: true,
|
||||||
|
if_return: true, join_vars: true, cascade: true, side_effects: true,
|
||||||
|
collapse_vars: false
|
||||||
|
}
|
||||||
|
input: {
|
||||||
|
// Note: output of test non_hoisted_function_after_return_2a run through compress again
|
||||||
|
function foo(x) {
|
||||||
|
if (x) {
|
||||||
|
return bar(1);
|
||||||
|
} else {
|
||||||
|
return bar(2);
|
||||||
|
var b;
|
||||||
|
}
|
||||||
|
var c = bar(3);
|
||||||
|
function bar(x) {
|
||||||
|
return 7 - x;
|
||||||
|
}
|
||||||
|
return b || c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect: {
|
||||||
|
// the output we would have liked to see from non_hoisted_function_after_return_2a
|
||||||
|
function foo(x) {
|
||||||
|
return bar(x ? 1 : 2);
|
||||||
|
function bar(x) { return 7 - x; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
expect_warnings: [
|
||||||
|
// Notice that some warnings are repeated by multiple compress passes.
|
||||||
|
// Not a regression. There is room for improvement here.
|
||||||
|
// Warnings should be cached and only output if unique.
|
||||||
|
"WARN: Dropping unreachable code [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Declarations in unreachable code! [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Dropping unreachable code [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Declarations in unreachable code! [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Dropping unreachable code [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Declarations in unreachable code! [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Dropping unreachable code [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Declarations in unreachable code! [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Dropping unreachable code [test/compress/issue-1034.js:102,12]",
|
||||||
|
"WARN: Declarations in unreachable code! [test/compress/issue-1034.js:102,12]",
|
||||||
|
"WARN: Dropping unreachable code [test/compress/issue-1034.js:106,12]",
|
||||||
|
"WARN: Dropping unreachable code [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Declarations in unreachable code! [test/compress/issue-1034.js:100,16]",
|
||||||
|
"WARN: Dropping unused variable b [test/compress/issue-1034.js:100,20]",
|
||||||
|
"WARN: Dropping unused variable c [test/compress/issue-1034.js:102,16]"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user