From: Mihai Bazon Date: Wed, 24 Oct 2012 06:33:32 +0000 (+0300) Subject: fix for `if (...) return; else return ...;` X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=70fd2b1f336535188696d9e7b198b8acd31aa558;p=UglifyJS.git fix for `if (...) return; else return ...;` (it was assumed that the first `return` always contains a value) close #22 --- diff --git a/lib/compress.js b/lib/compress.js index 22fb330e..2ea91d0c 100644 --- a/lib/compress.js +++ b/lib/compress.js @@ -1220,8 +1220,8 @@ merge(Compressor.prototype, { return make_node(self.body.CTOR, self, { value: make_node(AST_Conditional, self, { condition : self.condition, - consequent : self.body.value, - alternative : self.alternative.value || make_node(AST_Undefined, self).optimize(compressor) + consequent : self.body.value || make_node(AST_Undefined, self.body).optimize(compressor), + alternative : self.alternative.value || make_node(AST_Undefined, self.alternative).optimize(compressor) }) }).transform(compressor); } diff --git a/test/compress/issue-22.js b/test/compress/issue-22.js new file mode 100644 index 00000000..a8b7bc60 --- /dev/null +++ b/test/compress/issue-22.js @@ -0,0 +1,17 @@ +return_with_no_value_in_if_body: { + options = { conditionals: true }; + input: { + function foo(bar) { + if (bar) { + return; + } else { + return 1; + } + } + } + expect: { + function foo (bar) { + return bar ? void 0 : 1; + } + } +}