class Opal::Rewriters::ExplicitWriterReturn
def initialize
def initialize @in_masgn = false end
def on_masgn(node)
s(:int, 2)))
s(:int, 1),
s(:array,
s(:self), :b=)),
s(:send,
s(:self), :a=),
s(:send,
s(:mlhs,
s(:masgn,
For example, "self.a, self.b = 1, 2" parses to:
Multiple assignment is handled by Opal::Nodes::MassAssignNode
def on_masgn(node) @in_masgn = true result = super @in_masgn = false result end
def on_send(node)
def on_send(node) return super if @in_masgn recv, method_name, *args = *node if method_name.to_s =~ /#{REGEXP_START}\w+=#{REGEXP_END}/ || method_name.to_s == "[]=" set_args_node = s(:lvasgn, TMP_NAME, s(:array, *process_all(args))) s(:begin, set_args_node, node.updated(nil, [recv, method_name, s(:splat, GET_ARGS_NODE)]), RETURN_ARGS_NODE ) else super end end