class CodeTools::AST::ReceiverCase

Attributes

receiver[RW]

Public Class Methods

new(line, receiver, whens, else_body) click to toggle source
# File lib/rubinius/code/ast/control_flow.rb, line 50
def initialize(line, receiver, whens, else_body)
  @line = line
  @receiver = receiver
  @whens = whens
  @else = else_body || NilLiteral.new(line)
end

Public Instance Methods

bytecode(g) click to toggle source
# File lib/rubinius/code/ast/control_flow.rb, line 57
def bytecode(g)
  pos(g)

  done = g.new_label

  @receiver.bytecode(g)

  @whens.each do |w|
    w.receiver_bytecode(g, done)
  end

  g.pop
  @else.bytecode(g)

  # See command in if about why using line 0
  g.set_line 0

  done.set!
end
receiver_sexp() click to toggle source
# File lib/rubinius/code/ast/control_flow.rb, line 77
def receiver_sexp
  @receiver.to_sexp
end