modelize_property: Promote `refine-type` to an error
[nit.git] / src / modelize / modelize_class.nit
index e36a3ae..8164668 100644 (file)
@@ -274,10 +274,19 @@ redef class ModelBuilder
                if mclassdef.is_intro and objectclass != null then
                        if mclass.kind == extern_kind and mclass.name != "Pointer" then
                                # it is an extern class, but not a Pointer
+                               if pointerclass == null then
+                                       error(nclassdef, "Error: `Pointer` must be defined first.")
+                                       return
+                               end
                                if specpointer then supertypes.add pointerclass.mclass_type
-                       else if specobject and mclass.name != "Object" then
-                               # it is a standard class without super class (but is not Object)
-                               supertypes.add objectclass.mclass_type
+                       else if specobject then
+                               if mclass.name != "Object" then
+                                       # it is a standard class without super class (but is not Object)
+                                       supertypes.add objectclass.mclass_type
+                               else if mclass.kind != interface_kind then
+                                       error(nclassdef, "Error: `Object` must be an {interface_kind}.")
+                                       return
+                               end
                        end
                end