aboutsummaryrefslogtreecommitdiff
path: root/test/compress/issue-1052.js
diff options
context:
space:
mode:
authorAlex Lam S.L <alexlamsl@gmail.com>2017-05-27 13:41:49 +0800
committerGitHub <noreply@github.com>2017-05-27 13:41:49 +0800
commit95094b9c22d5f7b303383f75e660fc32d0a7f25f (patch)
treeb8074242ff5c3ea22a8f7183f0e854b477636816 /test/compress/issue-1052.js
parent1ff8e9dd386beb071945c4e3f73ed347c72527d8 (diff)
downloadtracifyjs-95094b9c22d5f7b303383f75e660fc32d0a7f25f.tar.gz
tracifyjs-95094b9c22d5f7b303383f75e660fc32d0a7f25f.zip
fix `if_return` on `AST_Defun` (#2010)
Previous fiix for #1052 perturbs declaration order of functions which leads to incorrect behaviour under "use strict".
Diffstat (limited to 'test/compress/issue-1052.js')
-rw-r--r--test/compress/issue-1052.js88
1 files changed, 67 insertions, 21 deletions
diff --git a/test/compress/issue-1052.js b/test/compress/issue-1052.js
index 0a77f006..e3dc7322 100644
--- a/test/compress/issue-1052.js
+++ b/test/compress/issue-1052.js
@@ -1,90 +1,91 @@
multiple_functions: {
- options = { if_return: true, hoist_funs: false };
+ options = {
+ hoist_funs: false,
+ if_return: true,
+ }
input: {
( function() {
if ( !window ) {
return;
}
-
function f() {}
function g() {}
} )();
}
expect: {
( function() {
- function f() {}
- function g() {}
-
// NOTE: other compression steps will reduce this
// down to just `window`.
if ( window );
+ function f() {}
+ function g() {}
} )();
}
}
single_function: {
- options = { if_return: true, hoist_funs: false };
+ options = {
+ hoist_funs: false,
+ if_return: true,
+ }
input: {
( function() {
if ( !window ) {
return;
}
-
function f() {}
} )();
}
expect: {
( function() {
- function f() {}
-
if ( window );
+ function f() {}
} )();
}
}
deeply_nested: {
- options = { if_return: true, hoist_funs: false };
+ options = {
+ hoist_funs: false,
+ if_return: true,
+ }
input: {
( function() {
if ( !window ) {
return;
}
-
function f() {}
function g() {}
-
if ( !document ) {
return;
}
-
function h() {}
} )();
}
expect: {
( function() {
- function f() {}
- function g() {}
-
- function h() {}
-
// NOTE: other compression steps will reduce this
// down to just `window`.
if ( window )
if (document);
+ function f() {}
+ function g() {}
+ function h() {}
} )();
}
}
not_hoisted_when_already_nested: {
- options = { if_return: true, hoist_funs: false };
+ options = {
+ hoist_funs: false,
+ if_return: true,
+ }
input: {
( function() {
if ( !window ) {
return;
}
-
if ( foo ) function f() {}
-
} )();
}
expect: {
@@ -94,3 +95,48 @@ not_hoisted_when_already_nested: {
} )();
}
}
+
+defun_if_return: {
+ options = {
+ hoist_funs: false,
+ if_return: true,
+ }
+ input: {
+ function e() {
+ function f() {}
+ if (!window) return;
+ else function g() {}
+ function h() {}
+ }
+ }
+ expect: {
+ function e() {
+ function f() {}
+ if (window) function g() {}
+ function h() {}
+ }
+ }
+}
+
+defun_hoist_funs: {
+ options = {
+ hoist_funs: true,
+ if_return: true,
+ }
+ input: {
+ function e() {
+ function f() {}
+ if (!window) return;
+ else function g() {}
+ function h() {}
+ }
+ }
+ expect: {
+ function e() {
+ function f() {}
+ function g() {}
+ function h() {}
+ !window;
+ }
+ }
+}