cleaned up usage of AST_BlockStatement
The following nodes were instances of AST_BlockStatement: AST_Scope, AST_SwitchBlock, AST_SwitchBranch. Also, AST_Try, AST_Catch, AST_Finally were having a body instanceof AST_BlockStatement. Overloading the meaning of AST_BlockStatement this way turned out to be a mess; we now have an AST_Block class that is the base class for things having a block of statements (might or might not be bracketed). The `this.body` of AST_Scope, AST_Try, AST_Catch, AST_Finally is now an array of statements (as they inherit from AST_Block). Avoiding calling superclass's _walk function in walkers (turns out we walked a node multiple times).
This commit is contained in:
@@ -480,6 +480,12 @@ function Compressor(options, false_by_default) {
|
||||
return self;
|
||||
});
|
||||
|
||||
SQUEEZE(AST_Block, function(self, compressor){
|
||||
self = self.clone();
|
||||
self.body = tighten_body(self.body, compressor);
|
||||
return self;
|
||||
});
|
||||
|
||||
SQUEEZE(AST_Scope, function(self, compressor){
|
||||
self = self.clone();
|
||||
self.hoist_declarations(compressor);
|
||||
@@ -651,7 +657,7 @@ function Compressor(options, false_by_default) {
|
||||
|
||||
SQUEEZE(AST_Try, function(self, compressor){
|
||||
self = self.clone();
|
||||
self.btry = self.btry.squeeze(compressor);
|
||||
self.body = tighten_body(self.body, compressor);
|
||||
if (self.bcatch) self.bcatch = self.bcatch.squeeze(compressor);
|
||||
if (self.bfinally) self.bfinally = self.bfinally.squeeze(compressor);
|
||||
return self;
|
||||
@@ -682,7 +688,7 @@ function Compressor(options, false_by_default) {
|
||||
self.hoist_declarations(compressor);
|
||||
if (self.name) self.name = self.name.squeeze(compressor);
|
||||
self.argnames = do_list(self.argnames, compressor);
|
||||
self.body = self.body.squeeze(compressor);
|
||||
self.body = tighten_body(self.body, compressor);
|
||||
return self;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user