visitStmt()

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);
    }
  }