Skip to content

Commit 29e1ff0

Browse files
committed
Preserve program completion value with enable_iife enabled
Fix mishoo#640
1 parent 7d8dea3 commit 29e1ff0

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

Diff for: lib/compress.js

+10
Original file line numberDiff line numberDiff line change
@@ -838,6 +838,14 @@ merge(Compressor.prototype, {
838838
return false;
839839
}
840840

841+
function is_completion_statement(node) {
842+
if (compressor.parent()) {
843+
return false;
844+
}
845+
846+
return statements[statements.length - 1].body === node;
847+
}
848+
841849
statements.forEach(function(stat){
842850
if (stat instanceof AST_SimpleStatement) {
843851
stat.body = (function transform(thing) {
@@ -846,6 +854,8 @@ merge(Compressor.prototype, {
846854
return node;
847855
}
848856
if (is_iife_call(node)) {
857+
if (is_completion_statement(node)) return node;
858+
849859
return make_node(AST_UnaryPrefix, node, {
850860
operator: "!",
851861
expression: node

Diff for: test/compress/negate-iife.js

+15-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ negate_iife_1: {
66
(function(){ stuff() })();
77
}
88
expect: {
9-
!function(){ stuff() }();
9+
(function(){ stuff() })();
1010
}
1111
}
1212

@@ -156,7 +156,7 @@ issue_1254_negate_iife_true: {
156156
};
157157
})()();
158158
}
159-
expect_exact: '!function(){return function(){console.log("test")}}()();'
159+
expect_exact: '(function(){return function(){console.log("test")}})()();'
160160
}
161161

162162
issue_1254_negate_iife_nested: {
@@ -170,5 +170,17 @@ issue_1254_negate_iife_nested: {
170170
};
171171
})()()()()();
172172
}
173-
expect_exact: '!function(){return function(){console.log("test")}}()()()()();'
173+
expect_exact: '(function(){return function(){console.log("test")}})()()()()();'
174+
}
175+
176+
preserve_completion_value: {
177+
options = {
178+
negate_iife: true,
179+
}
180+
input: {
181+
(function () { return true; })();
182+
(function () { return true; })();
183+
(function () { return true; })();
184+
}
185+
expect_exact: '!function(){return true}();!function(){return true}();(function(){return true})();'
174186
}

0 commit comments

Comments
 (0)