Module: Duby::AST::CallOpAssignment

Included in:
JRubyAst::OpAsgnNode, JRubyAst::OpElementAsgnNode
Defined in:
lib/duby/transform.rb

Instance Method Summary collapse

Instance Method Details

#call_op_assignment(transformer, parent, name, args) ⇒ Object



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/duby/transform.rb', line 125

def call_op_assignment(transformer, parent, name, args)
  set_args = JRubyAst::ListNode.new(position)
  set_args.add_all(args)
  set_args.add(value_node)
  
  first = JRubyAst::CallNode.new(position, receiver_node, name, args)
  second = JRubyAst::AttrAssignNode.new(position, receiver_node,
                                        "#{name}=", set_args)

  if operator_name == '||'
    klass = JRubyAst::OrNode
  elsif operator_name == '&&'
    klass = JRubyAst::AndNode
  else
    raise "Unknown OpAsgn operator #{operator_name}"
  end
  transformer.transform(klass.new(position, first, second), parent)
end