# File lib/type_checker.rb, line 321 def process_class(exp) name = exp.shift superclass = exp.shift @genv.add name, Type.zclass result = t(:class, Type.zclass) result << name result << superclass @env.scope do # HACK: not sure this is the right place, maybe genv instead? klass = eval(name.to_s) # HACK do proper lookup - ugh klass.constants.each do |c| const_type = case klass.const_get(c) when Fixnum then Type.long when String then Type.str else Type.unknown end @env.add c.intern, const_type end until exp.empty? do result << process(exp.shift) end end return result end