# 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