class Solargraph::Parser::ParserGem::NodeProcessors::MasgnNode

def process

def process
  # Example:

  #

  # s(:masgn,

  #   s(:mlhs,

  #     s(:send,

  #       s(:send, nil, :a), :b=),

  #     s(:lvasgn, :b),

  #     s(:ivasgn, :@c)),

  #   s(:array,

  #     s(:int, 1),

  #     s(:int, 2),

  #     s(:int, 3)))

  masgn = node
  mlhs = masgn.children.fetch(0)
  lhs_arr = mlhs.children
  mass_rhs = node.children.fetch(1)
  # Get pins created for the mlhs node

  process_children
  lhs_arr.each_with_index do |lhs, i|
    location = get_node_location(lhs)
    pin = if lhs.type == :lvasgn
            # lvasgn is a local variable

            locals.find { |l| l.location == location }
          else
            # e.g., ivasgn is an instance variable, etc

            pins.find { |iv| iv.location == location && iv.is_a?(Pin::BaseVariable) }
          end
    # @todo in line below, nothing in typechecking alerts

    #   when a non-existant method is called on 'l'

    if pin.nil?
      Solargraph.logger.debug { "Could not find local for masgn= value in location #{location.inspect} in #{lhs_arr} - masgn = #{masgn}, lhs.type = #{lhs.type}" }
      next
    end
    pin.mass_assignment = [mass_rhs, i]
  end
end