module Ruby
  class ReturnStatement < Statement
    include Normalizer

    attr_reader :return_value

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

    def to_vool
      val , hoisted = *normalized_vool(@return_value)
      me = Vool::ReturnStatement.new(val)
      return me unless hoisted
      Vool::Statements.new( hoisted ) << me
    end

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