class CodeTools::AST::DefineFunction
Attributes
arguments[RW]
name[RW]
Public Class Methods
new(line, name, block)
click to toggle source
# File lib/rubinius/code/ast/definitions.rb, line 190 def initialize(line, name, block) @line = line @name = name @arguments = block.extract_parameters block.array << NilLiteral.new(line) if block.array.empty? @body = block end
Public Instance Methods
bytecode(g)
click to toggle source
# File lib/rubinius/code/ast/definitions.rb, line 222 def bytecode(g) pos(g) g.push_rubinius g.push_literal @name g.push_generator compile_body(g) g.push_scope g.send :add_function, 3 end
compile_body(g)
click to toggle source
# File lib/rubinius/code/ast/definitions.rb, line 198 def compile_body(g) function = new_generator(g, @name, @arguments) function.push_state self function.state.push_super self function.definition_line(@line) function.state.push_name @name @arguments.bytecode(function) @body.bytecode(function) function.state.pop_name function.local_count = local_count function.local_names = local_names function.ret function.close function.pop_state return function end
sexp_name()
click to toggle source
# File lib/rubinius/code/ast/definitions.rb, line 233 def sexp_name [:fun, @name, @arguments.to_sexp, [:scope, @body.to_sexp]] end