in lib/semantic.js [1384:1412]
visitStmt(ast, env) {
if (ast.type === 'return') {
this.visitReturn(ast, env);
} else if (ast.type === 'yield') {
this.visitYield(ast, env);
} else if (ast.type === 'if') {
this.visitIf(ast, env);
} else if (ast.type === 'throw') {
this.visitThrow(ast, env);
} else if (ast.type === 'assign') {
this.visitAssign(ast, env);
} else if (ast.type === 'retry') {
if (!env.inReturnsBlock) {
this.error(`retry only can be in returns block`, ast);
}
} else if (ast.type === 'break') {
// unnecessary to check
} else if (ast.type === 'declare') {
this.visitDeclare(ast, env);
} else if (ast.type === 'try') {
this.visitTry(ast, env);
} else if (ast.type === 'while') {
this.visitWhile(ast, env);
} else if (ast.type === 'for') {
this.visitFor(ast, env);
} else {
this.visitExpr(ast, env);
}
}