X-Git-Url: http://nitlanguage.org diff --git a/src/modelize/modelize_class.nit b/src/modelize/modelize_class.nit index 2a5e9fb..ae9da02 100644 --- a/src/modelize/modelize_class.nit +++ b/src/modelize/modelize_class.nit @@ -168,6 +168,10 @@ redef class ModelBuilder warning(nfdt, "useless-bound", "Warning: Useless formal parameter type since `{bound}` cannnot have subclasses.") end else if mclass.mclassdefs.is_empty then + if objectclass == null then + error(nfd, "Error: Formal parameter type `{pname}' unbounded but no Object class exist.") + return + end # No bound, then implicitely bound by nullable Object var bound = objectclass.mclass_type.as_nullable bounds.add(bound) @@ -258,7 +262,6 @@ redef class ModelBuilder private fun check_supertypes(nmodule: AModule, nclassdef: AClassdef) do var mmodule = nmodule.mmodule.as(not null) - var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object") var mclass = nclassdef.mclass.as(not null) var mclassdef = nclassdef.mclassdef.as(not null) @@ -408,9 +411,8 @@ redef class ModelBuilder end end - # Register the nclassdef associated to each mclassdef - # FIXME: why not refine the `MClassDef` class with a nullable attribute? - var mclassdef2nclassdef: HashMap[MClassDef, AClassdef] = new HashMap[MClassDef, AClassdef] + # Registration of the nclassdef associated to each mclassdef + private var mclassdef2nclassdef = new HashMap[MClassDef, AClassdef] # Return the static type associated to the node `ntype`. # `mmodule` and `mclassdef` is the context where the call is made (used to understand formal types)