fixed run-tests and an issue about reversing the condition in AST_If
authorMihai Bazon <mihai@bazon.net>
Wed, 12 Sep 2012 10:00:13 +0000 (13:00 +0300)
committerMihai Bazon <mihai@bazon.net>
Wed, 12 Sep 2012 10:00:13 +0000 (13:00 +0300)
lib/compress.js
lib/output.js
test/run-tests.js

index 82898fd..7faf2df 100644 (file)
@@ -745,6 +745,7 @@ function Compressor(options, false_by_default) {
         var negated = self.condition.negate(compressor);
         var negated_is_best = best_of(self.condition, negated) === negated;
         if (self.alternative && negated_is_best) {
+            negated_is_best = false; // because we already do the switch here.
             self.condition = negated;
             var tmp = self.body;
             self.body = self.alternative || new AST_EmptyStatement();
@@ -776,7 +777,7 @@ function Compressor(options, false_by_default) {
                     right    : self.body.body
                 }).optimize(compressor)
             });
-            else return make_node(AST_SimpleStatement, self, {
+            return make_node(AST_SimpleStatement, self, {
                 body: make_node(AST_Binary, self, {
                     operator : "&&",
                     left     : self.condition,
index 2571881..f7cb47c 100644 (file)
@@ -885,7 +885,7 @@ function OutputStream(options) {
     });
     DEFPRINT(AST_Symbol, function(self, output){
         var def = self.definition();
-        output.print_name(def.mangled_name || def.name);
+        output.print_name(def ? def.mangled_name || def.name : self.name);
     });
     DEFPRINT(AST_This, function(self, output){
         output.print("this");
index 385c43f..2949bbf 100755 (executable)
@@ -48,7 +48,9 @@ function as_toplevel(input) {
     if (input instanceof U.AST_BlockStatement) input = input.body;
     else if (input instanceof U.AST_StatementBase) input = [ input ];
     else throw new Error("Unsupported input syntax");
-    return new U.AST_Toplevel({ body: input });
+    var toplevel = new U.AST_Toplevel({ body: input });
+    toplevel.figure_out_scope();
+    return toplevel;
 }
 
 function run_compress_tests() {
@@ -62,8 +64,9 @@ function run_compress_tests() {
             var cmp = new U.Compressor(test.options || {}, true);
             var expect = make_code(as_toplevel(test.expect), false);
             var input = as_toplevel(test.input);
-            input.figure_out_scope();
-            var output = make_code(input.squeeze(cmp), false);
+            var output = input.squeeze(cmp);
+            output.figure_out_scope();
+            output = make_code(output, false);
             if (expect != output) {
                 log("!!! failed\n---INPUT---\n{input}\n---OUTPUT---\n{output}\n---EXPECTED---\n{expected}\n\n", {
                     input: make_code(test.input),