aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-04-07 03:42:17 +0800
committerGitHub <noreply@github.com>2017-04-07 03:42:17 +0800
commitcc6aa3e5ac13c0da9f2481181f5b4f11275ca8c8 (patch)
treeb0876f76806180f7d14a824312944cee61482718 /test
parente869779a988b519487da0d6e2bd8e4849cd6d9f1 (diff)
downloadtracifyjs-cc6aa3e5ac13c0da9f2481181f5b4f11275ca8c8.tar.gz
tracifyjs-cc6aa3e5ac13c0da9f2481181f5b4f11275ca8c8.zip
fix incorrect context in variable substitution (#1791)
`AST_Node.optimize()` is context-aware, so don't cache its results to be used elsewhere. Also fixed a few cases of AST corruption and beef up safety of `pure_getters`.
Diffstat (limited to 'test')
-rw-r--r--test/compress/reduce_vars.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/test/compress/reduce_vars.js b/test/compress/reduce_vars.js
index cdc4ef20..fdfec99e 100644
--- a/test/compress/reduce_vars.js
+++ b/test/compress/reduce_vars.js
@@ -1866,3 +1866,75 @@ delay_def: {
}
expect_stdout: true
}
+
+booleans: {
+ options = {
+ booleans: true,
+ evaluate: true,
+ reduce_vars: true,
+ }
+ input: {
+ console.log(function(a) {
+ if (a != 0);
+ switch (a) {
+ case 0:
+ return "FAIL";
+ case false:
+ return "PASS";
+ }
+ }(false));
+ }
+ expect: {
+ console.log(function(a) {
+ if (!1);
+ switch (!1) {
+ case 0:
+ return "FAIL";
+ case !1:
+ return "PASS";
+ }
+ }(!1));
+ }
+ expect_stdout: "PASS"
+}
+
+side_effects_assign: {
+ options = {
+ evaluate: true,
+ reduce_vars: true,
+ sequences: true,
+ side_effects: true,
+ toplevel: true,
+ }
+ input: {
+ var a = typeof void (a && a.in == 1, 0);
+ console.log(a);
+ }
+ expect: {
+ var a = typeof void (a && a.in);
+ console.log(a);
+ }
+ expect_stdout: "undefined"
+}
+
+pure_getters: {
+ options = {
+ pure_getters: true,
+ reduce_vars: true,
+ side_effects: true,
+ toplevel: true,
+ }
+ input: {
+ try {
+ var a = (a.b, 2);
+ } catch (e) {}
+ console.log(a);
+ }
+ expect: {
+ try {
+ var a = (a.b, 2);
+ } catch (e) {}
+ console.log(a);
+ }
+ expect_stdout: "undefined"
+}