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:
@@ -467,12 +467,14 @@ function OutputStream(options) {
|
||||
self.body.print(output);
|
||||
output.semicolon();
|
||||
});
|
||||
DEFPRINT(AST_BlockStatement, function(self, output){
|
||||
var body = self.body;
|
||||
function print_bracketed(body, output) {
|
||||
if (body.length > 0) output.with_block(function(){
|
||||
display_body(body, false, output);
|
||||
});
|
||||
else output.print("{}");
|
||||
};
|
||||
DEFPRINT(AST_BlockStatement, function(self, output){
|
||||
print_bracketed(self.body, output);
|
||||
});
|
||||
DEFPRINT(AST_EmptyStatement, function(self, output){
|
||||
output.semicolon();
|
||||
@@ -563,7 +565,7 @@ function OutputStream(options) {
|
||||
});
|
||||
});
|
||||
output.space();
|
||||
self.body.print(output);
|
||||
print_bracketed(self.body, output);
|
||||
});
|
||||
DEFPRINT(AST_Lambda, function(self, output){
|
||||
self._do_print(output);
|
||||
@@ -701,7 +703,7 @@ function OutputStream(options) {
|
||||
DEFPRINT(AST_Try, function(self, output){
|
||||
output.print("try");
|
||||
output.space();
|
||||
self.btry.print(output);
|
||||
print_bracketed(self.body, output);
|
||||
if (self.bcatch) {
|
||||
output.space();
|
||||
self.bcatch.print(output);
|
||||
@@ -718,12 +720,12 @@ function OutputStream(options) {
|
||||
self.argname.print(output);
|
||||
});
|
||||
output.space();
|
||||
self.body.print(output);
|
||||
print_bracketed(self.body, output);
|
||||
});
|
||||
DEFPRINT(AST_Finally, function(self, output){
|
||||
output.print("finally");
|
||||
output.space();
|
||||
self.body.print(output);
|
||||
print_bracketed(self.body, output);
|
||||
});
|
||||
|
||||
/* -----[ var/const ]----- */
|
||||
|
||||
Reference in New Issue
Block a user