class SyntaxTree::BodyStmt

Experimental RBS support (using type sampling data from the type_fusion project).

# sig/syntax_tree/node.rbs

class SyntaxTree::BodyStmt < SyntaxTree::Node
  def accept: (Visitor visitor) -> untyped
  def bind: (SyntaxTree::Parser parser, Integer start_char, Integer start_column, Integer end_char, Integer end_column) -> untyped
  def child_nodes: () -> untyped
  def initialize: (statements: SyntaxTree::Statements, rescue_clause: nil, else_keyword: nil, else_clause: nil, ensure_clause: nil, location: SyntaxTree::Location) -> void
end

report back down into this one where it goes.
doesn’t necessarily know where it started. So the parent node needs to
bodystmt can’t actually determine its bounds appropriately because it

def ===(other)

def ===(other)
  other.is_a?(BodyStmt) && statements === other.statements &&
    rescue_clause === other.rescue_clause &&
    else_keyword === other.else_keyword &&
    else_clause === other.else_clause &&
    ensure_clause === other.ensure_clause
end

def accept(visitor)

Experimental RBS support (using type sampling data from the type_fusion project).

def accept: (Visitor visitor) -> untyped

This signature was generated using 6 samples from 1 application.

def accept(visitor)
  visitor.visit_bodystmt(self)
end

def bind(parser, start_char, start_column, end_char, end_column)

Experimental RBS support (using type sampling data from the type_fusion project).

def bind: (SyntaxTree::Parser parser, Integer start_char, Integer start_column, Integer end_char, Integer end_column) -> untyped

This signature was generated using 12 samples from 1 application.

def bind(parser, start_char, start_column, end_char, end_column)
  rescue_clause = self.rescue_clause
  @location =
    Location.new(
      start_line: location.start_line,
      start_char: start_char,
      start_column: start_column,
      end_line: location.end_line,
      end_char: end_char,
      end_column: end_column
    )
  # Here we're going to determine the bounds for the statements
  consequent = rescue_clause || else_clause || ensure_clause
  statements.bind(
    parser,
    start_char,
    start_column,
    consequent ? consequent.location.start_char : end_char,
    consequent ? consequent.location.start_column : end_column
  )
  # Next we're going to determine the rescue clause if there is one
  if rescue_clause
    consequent = else_clause || ensure_clause
    rescue_clause.bind_end(
      consequent ? consequent.location.start_char : end_char,
      consequent ? consequent.location.start_column : end_column
    )
  end
end

def child_nodes

Experimental RBS support (using type sampling data from the type_fusion project).

def child_nodes: () -> untyped

This signature was generated using 11 samples from 1 application.

def child_nodes
  [statements, rescue_clause, else_keyword, else_clause, ensure_clause]
end

def copy(

def copy(
  statements: nil,
  rescue_clause: nil,
  else_keyword: nil,
  else_clause: nil,
  ensure_clause: nil,
  location: nil
)
  node =
    BodyStmt.new(
      statements: statements || self.statements,
      rescue_clause: rescue_clause || self.rescue_clause,
      else_keyword: else_keyword || self.else_keyword,
      else_clause: else_clause || self.else_clause,
      ensure_clause: ensure_clause || self.ensure_clause,
      location: location || self.location
    )
  node.comments.concat(comments.map(&:copy))
  node
end

def deconstruct_keys(_keys)

def deconstruct_keys(_keys)
  {
    statements: statements,
    rescue_clause: rescue_clause,
    else_keyword: else_keyword,
    else_clause: else_clause,
    ensure_clause: ensure_clause,
    location: location,
    comments: comments
  }
end

def empty?

def empty?
  statements.empty? && !rescue_clause && !else_clause && !ensure_clause
end

def format(q)

def format(q)
  q.group do
    q.format(statements) unless statements.empty?
    if rescue_clause
      q.nest(-2) do
        q.breakable_force
        q.format(rescue_clause)
      end
    end
    if else_clause
      q.nest(-2) do
        q.breakable_force
        q.format(else_keyword)
      end
      unless else_clause.empty?
        q.breakable_force
        q.format(else_clause)
      end
    end
    if ensure_clause
      q.nest(-2) do
        q.breakable_force
        q.format(ensure_clause)
      end
    end
  end
end

def initialize(

Experimental RBS support (using type sampling data from the type_fusion project).

def initialize: (statements: SyntaxTree::Statements, rescue_clause: nil, else_keyword: nil, else_clause: nil, ensure_clause: nil, location: SyntaxTree::Location) -> void

This signature was generated using 13 samples from 1 application.

def initialize(
  statements:,
  rescue_clause:,
  else_keyword:,
  else_clause:,
  ensure_clause:,
  location:
)
  @statements = statements
  @rescue_clause = rescue_clause
  @else_keyword = else_keyword
  @else_clause = else_clause
  @ensure_clause = ensure_clause
  @location = location
  @comments = []
end