class Yadriggy::Rescue
begin-rescue-ensure.
`raise` is parsed as a method call (or a command).
Attributes
body[R]
@return [ASTnode|nil] the body of the rescue clause.
else[R]
@return [ASTnode|nil] the else clause.
ensure[R]
@return [ASTnode|nil] the ensure clause.
nested_rescue[R]
@return [Rescue|nil] the rest of rescue clauses.
The returned object's {#else} and {#ensure} are `nil`.
parameter[R]
@return [ASTnode|nil] the rescue parameter.
types[R]
@return [Array<ASTnode>] the exception types. It may be empty.
Public Class Methods
make(rescue_expr, else_expr, ensure_expr)
click to toggle source
# File lib/yadriggy/ast.rb, line 1457 def self.make(rescue_expr, else_expr, ensure_expr) if rescue_expr.nil? && else_expr.nil? && ensure_expr.nil? nil else Rescue.new(rescue_expr, else_expr, ensure_expr) end end
new(rescue_expr, else_expr=nil, ensure_expr=nil)
click to toggle source
# File lib/yadriggy/ast.rb, line 1465 def initialize(rescue_expr, else_expr=nil, ensure_expr=nil) if rescue_expr.nil? @types = [] @parameter = nil @body = nil @nested_rescue = nil else expr = has_tag?(rescue_expr, :rescue) rescue_clause = expr[1] if rescue_clause.nil? @types = [] elsif rescue_clause[0] == :mrhs_new_from_args types1 = to_nodes(rescue_clause[1]) @types = types1 << to_node(rescue_clause[2]) else @types = to_nodes(rescue_clause) end if expr[2].nil? @parameter = nil else @parameter = to_node(has_tag?(has_tag?(expr[2], :var_field)[1], :@ident)) end @body = Exprs.make(expr[3]) @nested_rescue = to_node(expr[4]) add_children(@types) add_child(@parameter) add_child(@body) add_child(@nested_rescue) end if else_expr.nil? @else = nil else if !else_expr.nil? && else_expr[0].is_a?(Array) else_body = else_expr else # Ruby 2.4 or earlier elsexpr = has_tag?(else_expr, :else) else_body = else_expr[1] end @else = Exprs.make(else_body) add_child(@else) end if ensure_expr.nil? @ensure = nil else ensexpr = has_tag?(ensure_expr, :ensure) @ensure = Exprs.make(ensexpr[1]) add_child(@ensure) end end
tag()
click to toggle source
# File lib/yadriggy/ast.rb, line 1455 def self.tag() :rescue end
Public Instance Methods
accept(evaluator)
click to toggle source
A method for Visitor pattern. @param [Eval] evaluator the visitor of Visitor pattern. @return [void]
# File lib/yadriggy/ast.rb, line 1524 def accept(evaluator) evaluator.rescue_end(self) end
has_else?()
click to toggle source
@return [Boolean] true if the else clause is included.
# File lib/yadriggy/ast.rb, line 1534 def has_else? !@else.nil? end
has_ensure?()
click to toggle source
@return [Boolean] true if the ensure clause is included.
# File lib/yadriggy/ast.rb, line 1539 def has_ensure? !@ensure.nil? end
has_rescue?()
click to toggle source
@return [Boolean] true if the rescue clause is included.
# File lib/yadriggy/ast.rb, line 1529 def has_rescue? !@body.nil? end