module Ruby
  class ReturnStatement < Statement
    include Normalizer

    attr_reader :return_value

    def initialize(value)
      @return_value = value || NilConstant.new
    end

    def to_sol
      val , hoisted = *normalized_sol(@return_value)
      me = Sol::ReturnStatement.new(val)
      return me unless hoisted
      Sol::Statements.new( hoisted ) << me
    end

    def to_s(depth = 0)
      at_depth(depth , "return #{@return_value.to_s}")
    end
  end
end