jumps, try and definitions are statements too
This commit is contained in:
@@ -248,7 +248,7 @@ var AST_Defun = DEFNODE("Defun", null, {
|
|||||||
|
|
||||||
var AST_Jump = DEFNODE("Jump", null, {
|
var AST_Jump = DEFNODE("Jump", null, {
|
||||||
$documentation: "Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)"
|
$documentation: "Base class for “jumps” (for now that's `return`, `throw`, `break` and `continue`)"
|
||||||
});
|
}, AST_Statement);
|
||||||
|
|
||||||
var AST_Exit = DEFNODE("Exit", "value", {
|
var AST_Exit = DEFNODE("Exit", "value", {
|
||||||
$documentation: "Base class for “exits” (`return` and `throw`)",
|
$documentation: "Base class for “exits” (`return` and `throw`)",
|
||||||
@@ -353,7 +353,7 @@ var AST_Try = DEFNODE("Try", "btry bcatch bfinally", {
|
|||||||
if (this.bfinally) this.bfinally._walk(visitor);
|
if (this.bfinally) this.bfinally._walk(visitor);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
}, AST_Statement);
|
||||||
|
|
||||||
// XXX: this is wrong according to ECMA-262 (12.4). the catch block
|
// XXX: this is wrong according to ECMA-262 (12.4). the catch block
|
||||||
// should introduce another scope, as the argname should be visible
|
// should introduce another scope, as the argname should be visible
|
||||||
@@ -391,7 +391,7 @@ var AST_Definitions = DEFNODE("Definitions", "definitions", {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
}, AST_Statement);
|
||||||
|
|
||||||
var AST_Var = DEFNODE("Var", null, {
|
var AST_Var = DEFNODE("Var", null, {
|
||||||
$documentation: "A `var` statement"
|
$documentation: "A `var` statement"
|
||||||
|
|||||||
@@ -921,7 +921,7 @@ function OutputStream(options) {
|
|||||||
function first_in_statement(output) {
|
function first_in_statement(output) {
|
||||||
var a = output.stack(), i = a.length, node = a[--i], p = a[--i];
|
var a = output.stack(), i = a.length, node = a[--i], p = a[--i];
|
||||||
while (i > 0) {
|
while (i > 0) {
|
||||||
if (p instanceof AST_Statement)
|
if (p instanceof AST_Statement && p.body === node)
|
||||||
return true;
|
return true;
|
||||||
if ((p instanceof AST_Seq && p.first === node ) ||
|
if ((p instanceof AST_Seq && p.first === node ) ||
|
||||||
(p instanceof AST_Call && p.expression === node ) ||
|
(p instanceof AST_Call && p.expression === node ) ||
|
||||||
|
|||||||
Reference in New Issue
Block a user