class CodeTools::AST::AttributeAssignment

Public Class Methods

new(line, receiver, name, arguments) click to toggle source
# File lib/rubinius/code/ast/sends.rb, line 209
def initialize(line, receiver, name, arguments)
  @line = line

  @receiver = receiver
  @privately = receiver.kind_of?(Self) ? true : false

  @name = :"#{name}="

  @arguments = Arguments.new line, arguments
end

Public Instance Methods

bytecode(g, anddot=false) click to toggle source
# File lib/rubinius/code/ast/sends.rb, line 220
def bytecode(g, anddot=false)
  @receiver.bytecode(g) unless anddot
  if g.state.masgn?
    g.swap
    g.send @name, 1, @privately
  else
    @arguments.bytecode(g)
    g.dup

    if @arguments.splat?
      g.move_down @arguments.size + 2
      g.swap
      g.push_tagged_nil 0
      g.send_with_splat @name, @arguments.size, @privately, true
    else
      g.move_down @arguments.size + 1
      g.send @name, @arguments.size, @privately
    end

    g.pop
  end
end
sexp_name() click to toggle source
# File lib/rubinius/code/ast/sends.rb, line 243
def sexp_name
  :attrasgn
end