From 5c169615a84201b707e77c1b72b56908ca369d40 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Thu, 22 Mar 2018 23:46:26 +0800 Subject: fix corner case in `inline` (#3017) fixes #3016 --- test/compress/functions.js | 157 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) (limited to 'test/compress') diff --git a/test/compress/functions.js b/test/compress/functions.js index ddf5fe05..bbe94ebf 100644 --- a/test/compress/functions.js +++ b/test/compress/functions.js @@ -2051,3 +2051,160 @@ drop_lone_use_strict: { } } } + +issue_3016_1: { + options = { + inline: true, + toplevel: true, + } + input: { + var b = 1; + do { + (function(a) { + return a[b]; + var a; + })(3); + } while (0); + console.log(b); + } + expect: { + var b = 1; + do { + a = 3, + a[b]; + } while(0); + var a; + console.log(b); + } + expect_stdout: "1" +} + +issue_3016_2: { + options = { + dead_code: true, + inline: true, + toplevel: true, + } + input: { + var b = 1; + do { + (function(a) { + return a[b]; + try { + a = 2; + } catch (a) { + var a; + } + })(3); + } while (0); + console.log(b); + } + expect: { + var b = 1; + do { + a = 3, + a[b]; + } while(0); + var a; + console.log(b); + } + expect_stdout: "1" +} + +issue_3016_2_ie8: { + options = { + dead_code: true, + ie8: true, + inline: true, + toplevel: true, + } + input: { + var b = 1; + do { + (function(a) { + return a[b]; + try { + a = 2; + } catch (a) { + var a; + } + })(3); + } while (0); + console.log(b); + } + expect: { + var b = 1; + do { + a = 3, + a[b]; + } while(0); + var a; + console.log(b); + } + expect_stdout: "1" +} + +issue_3016_3: { + options = { + dead_code: true, + inline: true, + toplevel: true, + } + input: { + var b = 1; + do { + console.log(function() { + return a ? "FAIL" : a = "PASS"; + try { + a = 2; + } catch (a) { + var a; + } + }()); + } while (b--); + } + expect: { + var b = 1; + do { + console.log((a = void 0, a ? "FAIL" : a = "PASS")); + } while(b--); + var a; + } + expect_stdout: [ + "PASS", + "PASS", + ] +} + +issue_3016_3_ie8: { + options = { + dead_code: true, + ie8: true, + inline: true, + toplevel: true, + } + input: { + var b = 1; + do { + console.log(function() { + return a ? "FAIL" : a = "PASS"; + try { + a = 2; + } catch (a) { + var a; + } + }()); + } while (b--); + } + expect: { + var b = 1; + do { + console.log((a = void 0, a ? "FAIL" : a = "PASS")); + } while(b--); + var a; + } + expect_stdout: [ + "PASS", + "PASS", + ] +} -- cgit v1.2.3