# 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