modelbuilder_base: Refactor the signature of `resolve_mtype*`
[nit.git] / src / modelize / modelize_class.nit
index 23ab906..3be6804 100644 (file)
@@ -179,7 +179,7 @@ redef class ModelBuilder
                                end
                                var nfdt = nfd.n_type
                                if nfdt != null then
-                                       var bound = resolve_mtype_unchecked(mmodule, null, nfdt, false)
+                                       var bound = resolve_mtype3_unchecked(mmodule, null, null, nfdt, false)
                                        if bound == null then return # Forward error
                                        if bound.need_anchor then
                                                # No F-bounds!
@@ -256,7 +256,7 @@ redef class ModelBuilder
                        for nsc in nclassdef.n_superclasses do
                                specobject = false
                                var ntype = nsc.n_type
-                               var mtype = resolve_mtype_unchecked(mmodule, mclassdef, ntype, false)
+                               var mtype = resolve_mtype_unchecked(mclassdef, ntype, false)
                                if mtype == null then continue # Skip because of error
                                if not mtype isa MClassType then
                                        error(ntype, "Error: supertypes cannot be a formal type.")
@@ -364,11 +364,21 @@ redef class ModelBuilder
                for nclassdef in nmodule.n_classdefs do
                        if nclassdef isa AStdClassdef then
                                var mclassdef = nclassdef.mclassdef
+                               var mclass
+                               var anchor
+                               if mclassdef == null then
+                                       mclass = null
+                                       anchor = null
+                               else
+                                       mclass = mclassdef.mclass
+                                       anchor = mclassdef.bound_mtype
+                               end
+
                                # check bound of formal parameter
                                for nfd in nclassdef.n_formaldefs do
                                        var nfdt = nfd.n_type
                                        if nfdt != null and nfdt.mtype != null then
-                                               var bound = resolve_mtype(mmodule, mclassdef, nfdt)
+                                               var bound = resolve_mtype3(mmodule, mclass, anchor, nfdt)
                                                if bound == null then return # Forward error
                                        end
                                end
@@ -376,7 +386,7 @@ redef class ModelBuilder
                                for nsc in nclassdef.n_superclasses do
                                        var ntype = nsc.n_type
                                        if ntype.mtype != null then
-                                               var mtype = resolve_mtype(mmodule, mclassdef, ntype)
+                                               var mtype = resolve_mtype3(mmodule, mclass, anchor, ntype)
                                                if mtype == null then return # Forward error
                                        end
                                end