model: all extern classes are subclasses of Pointer
authorAlexis Laferrière <alexis.laf@xymus.net>
Fri, 2 Aug 2013 16:23:37 +0000 (12:23 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Wed, 30 Oct 2013 17:33:50 +0000 (13:33 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

src/modelize_class.nit

index 5737e4b..3bd260a 100644 (file)
@@ -152,6 +152,7 @@ redef class ModelBuilder
        do
                var mmodule = nmodule.mmodule.as(not null)
                var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object")
+               var pointerclass = try_get_mclass_by_name(nmodule, mmodule, "Pointer")
                var mclass = nclassdef.mclass.as(not null)
                var mclassdef = nclassdef.mclassdef.as(not null)
 
@@ -171,8 +172,16 @@ redef class ModelBuilder
                                #print "new super : {mclass} < {mtype}"
                        end
                end
-               if specobject and mclass.name != "Object" and objectclass != null and mclassdef.is_intro then
-                       supertypes.add objectclass.mclass_type
+               if specobject and mclassdef.is_intro then
+                       if mclass.kind == extern_kind then
+                               if mclass.name == "Pointer" then
+                                       supertypes.add objectclass.mclass_type
+                               else
+                                       supertypes.add pointerclass.mclass_type
+                               end
+                       else if mclass.name != "Object" and objectclass != null then
+                               supertypes.add objectclass.mclass_type
+                       end
                end
 
                mclassdef.set_supertypes(supertypes)