diff options
author | Mihai Bazon <mihai@bazon.net> | 2012-09-05 11:31:02 +0300 |
---|---|---|
committer | Mihai Bazon <mihai@bazon.net> | 2012-09-05 11:39:43 +0300 |
commit | 8633b0073f016fddd655ae5e1f1726287a24828d (patch) | |
tree | 83f03aac1f74a30555e44edfa2a75eb5ca372e6f /lib/output.js | |
parent | 1b5183dd5ee7d2b147f5862c9abf8f45f50fc82f (diff) | |
download | tracifyjs-8633b0073f016fddd655ae5e1f1726287a24828d.tar.gz tracifyjs-8633b0073f016fddd655ae5e1f1726287a24828d.zip |
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).
Diffstat (limited to 'lib/output.js')
-rw-r--r-- | lib/output.js | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/output.js b/lib/output.js index e5c1c26b..5df1c2c4 100644 --- a/lib/output.js +++ b/lib/output.js @@ -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 ]----- */ |