module Ruby

  # Send and yield are very very similar, so they have a base class CallStatement
  #
  # The YieldStatement really only provides to_s, and has slightly
  # different constructor. See CallStatement
  #
  class YieldStatement < CallStatement

    # We give the instance of the yield and auto generated name
    # Also, a yield is always (for now) on self
    def initialize(arguments)
      super("yield_#{object_id}".to_sym , SelfExpression.new , arguments)
    end

    def to_s
      "yield(#{arguments.join(', ')})"
    end
  end
end