class CodeTools::AST::Case
Attributes
else[RW]
whens[RW]
Public Class Methods
new(line, whens, else_body)
click to toggle source
# File lib/rubinius/code/ast/control_flow.rb, line 7 def initialize(line, whens, else_body) @line = line @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 13 def bytecode(g) pos(g) done = g.new_label @whens.each do |w| w.bytecode(g, done) end @else.bytecode(g) # See command in if about why using line 0 g.set_line 0 done.set! end
defined(g)
click to toggle source
# File lib/rubinius/code/ast/control_flow.rb, line 30 def defined(g) g.push_literal "expression" end
receiver_sexp()
click to toggle source
# File lib/rubinius/code/ast/control_flow.rb, line 34 def receiver_sexp nil end
to_sexp()
click to toggle source
# File lib/rubinius/code/ast/control_flow.rb, line 38 def to_sexp else_sexp = @else.kind_of?(NilLiteral) ? nil : @else.to_sexp sexp = [:case, receiver_sexp] sexp += @whens.map { |x| x.to_sexp } sexp << else_sexp sexp end