From 1e390269d47e2a555f511556590d826938d572f9 Mon Sep 17 00:00:00 2001 From: kzc Date: Sun, 22 May 2016 11:35:41 -0400 Subject: Optimize if_return for single if/return cases. Fixes #1089 --- test/compress/if_return.js | 207 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 test/compress/if_return.js (limited to 'test') diff --git a/test/compress/if_return.js b/test/compress/if_return.js new file mode 100644 index 00000000..78a6e818 --- /dev/null +++ b/test/compress/if_return.js @@ -0,0 +1,207 @@ +if_return_1: { + options = { + if_return : true, + sequences : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + unused : true, + side_effects : true, + dead_code : true, + } + input: { + function f(x) { + if (x) { + return true; + } + } + } + expect: { + function f(x){if(x)return!0} + } +} + +if_return_2: { + options = { + if_return : true, + sequences : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + unused : true, + side_effects : true, + dead_code : true, + } + input: { + function f(x, y) { + if (x) + return 3; + if (y) + return c(); + } + } + expect: { + function f(x,y){return x?3:y?c():void 0} + } +} + +if_return_3: { + options = { + if_return : true, + sequences : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + unused : true, + side_effects : true, + dead_code : true, + } + input: { + function f(x) { + a(); + if (x) { + b(); + return false; + } + } + } + expect: { + function f(x){if(a(),x)return b(),!1} + } +} + +if_return_4: { + options = { + if_return : true, + sequences : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + unused : true, + side_effects : true, + dead_code : true, + } + input: { + function f(x, y) { + a(); + if (x) return 3; + b(); + if (y) return c(); + } + } + expect: { + function f(x,y){return a(),x?3:(b(),y?c():void 0)} + } +} + +if_return_5: { + options = { + if_return : true, + sequences : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + unused : true, + side_effects : true, + dead_code : true, + } + input: { + function f() { + if (x) + return; + return 7; + if (y) + return j; + } + } + expect: { + function f(){if(!x)return 7} + } +} + +if_return_6: { + options = { + if_return : true, + sequences : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + unused : true, + side_effects : true, + dead_code : true, + } + input: { + function f(x) { + return x ? true : void 0; + return y; + } + } + expect: { + // suboptimal + function f(x){return!!x||void 0} + } +} + +if_return_7: { + options = { + if_return : true, + sequences : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + unused : true, + side_effects : true, + dead_code : true, + } + input: { + function f(x) { + if (x) { + return true; + } + foo(); + bar(); + } + } + expect: { + // suboptimal + function f(x){return!!x||(foo(),void bar())} + } +} + +issue_1089: { + options = { + if_return : true, + sequences : true, + conditionals : true, + comparisons : true, + evaluate : true, + booleans : true, + unused : true, + side_effects : true, + dead_code : true, + } + input: { + function x() { + var f = document.getElementById("fname"); + if (f.files[0].size > 12345) { + alert("alert"); + f.focus(); + return false; + } + } + } + expect: { + function x() { + var f = document.getElementById("fname"); + if (f.files[0].size > 12345) + return alert("alert"), f.focus(), !1; + } + } +} -- cgit v1.2.3