diff options
author | Alex Lam S.L <alexlamsl@gmail.com> | 2017-05-27 13:41:49 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-27 13:41:49 +0800 |
commit | 95094b9c22d5f7b303383f75e660fc32d0a7f25f (patch) | |
tree | b8074242ff5c3ea22a8f7183f0e854b477636816 /test/compress/issue-1052.js | |
parent | 1ff8e9dd386beb071945c4e3f73ed347c72527d8 (diff) | |
download | tracifyjs-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.js | 88 |
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; + } + } +} |