Fix error in the output minifying `Function("return this")()`
authorMihai Bazon <mihai@bazon.net>
Mon, 30 Sep 2013 08:49:29 +0000 (11:49 +0300)
committerMihai Bazon <mihai@bazon.net>
Mon, 30 Sep 2013 08:49:29 +0000 (11:49 +0300)
lib/compress.js

index 37aba41..daac1c3 100644 (file)
@@ -1646,7 +1646,17 @@ merge(Compressor.prototype, {
                             ast = ast.transform(comp);
                             ast.figure_out_scope();
                             ast.mangle_names();
-                            var fun = ast.body[0].body.expression;
+                            var fun;
+                            try {
+                                ast.walk(new TreeWalker(function(node){
+                                    if (node instanceof AST_Lambda) {
+                                        fun = node;
+                                        throw ast;
+                                    }
+                                }));
+                            } catch(ex) {
+                                if (ex !== ast) throw ex;
+                            };
                             var args = fun.argnames.map(function(arg, i){
                                 return make_node(AST_String, self.args[i], {
                                     value: arg.print_to_string()
@@ -1666,6 +1676,7 @@ merge(Compressor.prototype, {
                                 compressor.warn(ex.toString());
                             } else {
                                 console.log(ex);
+                                throw ex;
                             }
                         }
                     }