fixed run-tests and an issue about reversing the condition in AST_If
This commit is contained in:
@@ -745,6 +745,7 @@ function Compressor(options, false_by_default) {
|
|||||||
var negated = self.condition.negate(compressor);
|
var negated = self.condition.negate(compressor);
|
||||||
var negated_is_best = best_of(self.condition, negated) === negated;
|
var negated_is_best = best_of(self.condition, negated) === negated;
|
||||||
if (self.alternative && negated_is_best) {
|
if (self.alternative && negated_is_best) {
|
||||||
|
negated_is_best = false; // because we already do the switch here.
|
||||||
self.condition = negated;
|
self.condition = negated;
|
||||||
var tmp = self.body;
|
var tmp = self.body;
|
||||||
self.body = self.alternative || new AST_EmptyStatement();
|
self.body = self.alternative || new AST_EmptyStatement();
|
||||||
@@ -776,7 +777,7 @@ function Compressor(options, false_by_default) {
|
|||||||
right : self.body.body
|
right : self.body.body
|
||||||
}).optimize(compressor)
|
}).optimize(compressor)
|
||||||
});
|
});
|
||||||
else return make_node(AST_SimpleStatement, self, {
|
return make_node(AST_SimpleStatement, self, {
|
||||||
body: make_node(AST_Binary, self, {
|
body: make_node(AST_Binary, self, {
|
||||||
operator : "&&",
|
operator : "&&",
|
||||||
left : self.condition,
|
left : self.condition,
|
||||||
|
|||||||
@@ -885,7 +885,7 @@ function OutputStream(options) {
|
|||||||
});
|
});
|
||||||
DEFPRINT(AST_Symbol, function(self, output){
|
DEFPRINT(AST_Symbol, function(self, output){
|
||||||
var def = self.definition();
|
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){
|
DEFPRINT(AST_This, function(self, output){
|
||||||
output.print("this");
|
output.print("this");
|
||||||
|
|||||||
@@ -48,7 +48,9 @@ function as_toplevel(input) {
|
|||||||
if (input instanceof U.AST_BlockStatement) input = input.body;
|
if (input instanceof U.AST_BlockStatement) input = input.body;
|
||||||
else if (input instanceof U.AST_StatementBase) input = [ input ];
|
else if (input instanceof U.AST_StatementBase) input = [ input ];
|
||||||
else throw new Error("Unsupported input syntax");
|
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() {
|
function run_compress_tests() {
|
||||||
@@ -62,8 +64,9 @@ function run_compress_tests() {
|
|||||||
var cmp = new U.Compressor(test.options || {}, true);
|
var cmp = new U.Compressor(test.options || {}, true);
|
||||||
var expect = make_code(as_toplevel(test.expect), false);
|
var expect = make_code(as_toplevel(test.expect), false);
|
||||||
var input = as_toplevel(test.input);
|
var input = as_toplevel(test.input);
|
||||||
input.figure_out_scope();
|
var output = input.squeeze(cmp);
|
||||||
var output = make_code(input.squeeze(cmp), false);
|
output.figure_out_scope();
|
||||||
|
output = make_code(output, false);
|
||||||
if (expect != output) {
|
if (expect != output) {
|
||||||
log("!!! failed\n---INPUT---\n{input}\n---OUTPUT---\n{output}\n---EXPECTED---\n{expected}\n\n", {
|
log("!!! failed\n---INPUT---\n{input}\n---OUTPUT---\n{output}\n---EXPECTED---\n{expected}\n\n", {
|
||||||
input: make_code(test.input),
|
input: make_code(test.input),
|
||||||
|
|||||||
Reference in New Issue
Block a user