From f001e4cb9d5bfe56e25db552bb7ab0951a142a99 Mon Sep 17 00:00:00 2001 From: "Alex Lam S.L" Date: Mon, 27 Mar 2017 01:58:21 +0800 Subject: fix `cascade` on anonymous function reference (#1693) Unlike normal variables and even function definitions, these cannot be reassigned, even though assignment expressions would "leak" the assigned value as normal. --- test/compress/sequences.js | 110 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) (limited to 'test/compress') diff --git a/test/compress/sequences.js b/test/compress/sequences.js index af6e0c36..f1fa0e87 100644 --- a/test/compress/sequences.js +++ b/test/compress/sequences.js @@ -330,3 +330,113 @@ issue_1685: { } expect_stdout: true } + +func_def_1: { + options = { + cascade: true, + side_effects: true, + } + input: { + function f() { + return f = 0, !!f; + } + console.log(f()); + } + expect: { + function f() { + return !!(f = 0); + } + console.log(f()); + } + expect_stdout: "false" +} + +func_def_2: { + options = { + cascade: true, + side_effects: true, + } + input: { + console.log(function f() { + return f = 0, !!f; + }()); + } + expect: { + console.log(function f() { + return f = 0, !!f; + }()); + } + expect_stdout: "true" +} + +func_def_3: { + options = { + cascade: true, + side_effects: true, + } + input: { + function f() { + function g() {} + return g = 0, !!g; + } + console.log(f()); + } + expect: { + function f() { + function g() {} + return !!(g = 0); + } + console.log(f()); + } + expect_stdout: "false" +} + +func_def_4: { + options = { + cascade: true, + side_effects: true, + } + input: { + function f() { + function g() { + return g = 0, !!g; + } + return g(); + } + console.log(f()); + } + expect: { + function f() { + function g() { + return !!(g = 0); + } + return g(); + } + console.log(f()); + } + expect_stdout: "false" +} + +func_def_5: { + options = { + cascade: true, + side_effects: true, + } + input: { + function f() { + return function g(){ + return g = 0, !!g; + }(); + } + console.log(f()); + } + expect: { + function f() { + return function g(){ + return g = 0, !!g; + }(); + } + console.log(f()); + } + expect_stdout: "true" +} -- cgit v1.2.3