class CodeTools::AST::Class

Attributes

body[RW]
name[RW]
superclass[RW]

Public Class Methods

new(line, name, superclass, body) click to toggle source
# File lib/rubinius/code/ast/definitions.rb, line 836
def initialize(line, name, superclass, body)
  @line = line

  @superclass = superclass ? superclass : NilLiteral.new(line)

  case name
  when Symbol
    @name = ClassName.new line, name, @superclass
  when ToplevelConstant
    @name = ToplevelClassName.new line, name, @superclass
  else
    @name = ScopedClassName.new line, name, @superclass
  end

  if body
    @body = ClassScope.new line, @name, body
  else
    @body = EmptyBody.new line
  end
end

Public Instance Methods

bytecode(g) click to toggle source
# File lib/rubinius/code/ast/definitions.rb, line 857
def bytecode(g)
  @name.bytecode(g)
  @body.bytecode(g)
end
to_sexp() click to toggle source
# File lib/rubinius/code/ast/definitions.rb, line 862
def to_sexp
  superclass = @superclass.kind_of?(NilLiteral) ? nil : @superclass.to_sexp
  [:class, @name.to_sexp, superclass, @body.to_sexp]
end