process_iter (TypeChecker)

    # File lib/type_checker.rb, line 640
      def process_iter(exp)
        call_exp = process exp.shift
        dargs_exp = process exp.shift
        body_exp = process exp.shift

        lhs = call_exp[1] # FIX
        if lhs.nil? then
          # We're an fcall getting passed a block.
          return t(:iter, call_exp, dargs_exp, body_exp, call_exp.sexp_type)
        else
          Type.unknown_list.unify lhs.sexp_type # force a list type, lhs must be Enum
          Type.new(lhs.sexp_type.list_type).unify dargs_exp.sexp_type # pull out type

          return t(:iter, call_exp, dargs_exp, body_exp, Type.void)
        end
      end