process_class (TypeChecker)

    # 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