aboutsummaryrefslogtreecommitdiff
path: root/test/input/invalid/object.js
AgeCommit message (Collapse)Author
option>space:mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-03-24 02:55:32 +0800
committerGitHub <noreply@github.com>2017-03-24 02:55:32 +0800
commite918748d88e39c6f2142b01e71c3e580d790d642 (patch)
treee8df63c176d67d82f7bc3f5a6df7e99091248a4d /test
parent6b2f34769a5572bdd9db034f19bbc2a0b6e6dabb (diff)
downloadtracifyjs-e918748d88e39c6f2142b01e71c3e580d790d642.tar.gz
tracifyjs-e918748d88e39c6f2142b01e71c3e580d790d642.zip
improve collapsible value detection (#1638)
- #1634 bars variables with cross-scope references in between to collapse - but if assigned value is side-effect-free, no states can be modified, so it is safe to move
Diffstat (limited to 'test')
-rw-r--r--test/compress/collapse_vars.js68
-rw-r--r--test/mocha/glob.js4
2 files changed, 70 insertions, 2 deletions
diff --git a/test/compress/collapse_vars.js b/test/compress/collapse_vars.js
index 6f273b97..2437ca5f 100644
--- a/test/compress/collapse_vars.js
+++ b/test/compress/collapse_vars.js
@@ -1522,3 +1522,71 @@ issue_1631_3: {
}
expect_stdout: "6"
}
+
+var_side_effects_1: {
+ options = {
+ collapse_vars: true,
+ }
+ input: {
+ var print = console.log.bind(console);
+ function foo(x) {
+ var twice = x * 2;
+ print('Foo:', twice);
+ }
+ foo(10);
+ }
+ expect: {
+ var print = console.log.bind(console);
+ function foo(x) {
+ print('Foo:', 2 * x);
+ }
+ foo(10);
+ }
+ expect_stdout: true
+}
+
+var_side_effects_2: {
+ options = {
+ collapse_vars: true,
+ }
+ input: {
+ var print = console.log.bind(console);
+ function foo(x) {
+ var twice = x.y * 2;
+ print('Foo:', twice);
+ }
+ foo({ y: 10 });
+ }
+ expect: {
+ var print = console.log.bind(console);
+ function foo(x) {
+ var twice = 2 * x.y;
+ print('Foo:', twice);
+ }
+ foo({ y: 10 });
+ }
+ expect_stdout: true
+}
+
+var_side_effects_3: {
+ options = {
+ collapse_vars: true,
+ pure_getters: true,
+ }
+ input: {
+ var print = console.log.bind(console);
+ function foo(x) {
+ var twice = x.y * 2;
+ print('Foo:', twice);
+ }
+ foo({ y: 10 });
+ }
+ expect: {
+ var print = console.log.bind(console);
+ function foo(x) {
+ print('Foo:', 2 * x.y);
+ }
+ foo({ y: 10 });
+ }
+ expect_stdout: true
+}
diff --git a/test/mocha/glob.js b/test/mocha/glob.js
index e291efc8..e9555a52 100644
--- a/test/mocha/glob.js
+++ b/test/mocha/glob.js
@@ -5,7 +5,7 @@ var path = require("path");
describe("minify() with input file globs", function() {
it("minify() with one input file glob string.", function() {
var result = Uglify.minify("test/input/issue-1242/foo.*");
- assert.strictEqual(result.code, 'function foo(o){var n=2*o;print("Foo:",n)}var print=console.log.bind(console);');
+ assert.strictEqual(result.code, 'function foo(o){print("Foo:",2*o)}var print=console.log.bind(console);');
});
it("minify() with an array of one input file glob.", function() {
var result = Uglify.minify([
@@ -20,7 +20,7 @@ describe("minify() with input file globs", function() {
], {
compress: { toplevel: true }
});
- assert.strictEqual(result.code, 'var print=console.log.bind(console),a=function(n){return 3*n}(3),b=function(n){return n/2}(12);print("qux",a,b),function(n){var o=2*n;print("Foo:",o)}(11);');
+ assert.strictEqual(result.code, 'var print=console.log.bind(console),a=function(n){return 3*n}(3),b=function(n){return n/2}(12);print("qux",a,b),function(n){print("Foo:",2*n)}(11);');
});
it("should throw with non-matching glob string", function() {
var glob = "test/input/issue-1242/blah.*";