model: try_get_primitive_method asks for a MClass (and not a MType)
[nit.git] / src / modelbuilder.nit
index b0a5652..8186969 100644 (file)
@@ -29,6 +29,8 @@ import opts
 import toolcontext
 import phase
 
+private import more_collections
+
 ###
 
 redef class ToolContext
@@ -70,6 +72,11 @@ class ModelBuilder
                        nmodules.add(mmodule2nmodule[mm])
                end
                toolcontext.run_phases(nmodules)
+
+               if toolcontext.opt_only_metamodel.value then
+                       self.toolcontext.info("*** ONLY METAMODEL", 1)
+                       exit(0)
+               end
        end
 
        # Instantiate a modelbuilder for a model and a toolcontext
@@ -121,6 +128,12 @@ class ModelBuilder
                self.toolcontext.info("*** END PARSE: {time1-time0} ***", 2)
 
                self.toolcontext.check_errors
+
+               if toolcontext.opt_only_parse.value then
+                       self.toolcontext.info("*** ONLY PARSE...", 1)
+                       exit(0)
+               end
+
                return mmodules
        end
 
@@ -398,6 +411,10 @@ class ModelBuilder
                        if sup == null then continue # Skip error
                        imported_modules.add(sup)
                        var mvisibility = aimport.n_visibility.mvisibility
+                       if mvisibility == protected_visibility then
+                               error(aimport.n_visibility, "Error: only properties can be protected.")
+                               return
+                       end
                        mmodule.set_visibility_for(sup, mvisibility)
                end
                if stdimport then
@@ -434,7 +451,7 @@ class ModelBuilder
        end
 
        # Force to get the primitive method named `name' on the type `recv' or do a fatal error on `n'
-       fun force_get_primitive_method(n: ANode, name: String, recv: MType, mmodule: MModule): MMethod
+       fun force_get_primitive_method(n: ANode, name: String, recv: MClass, mmodule: MModule): MMethod
        do
                var res = mmodule.try_get_primitive_method(name, recv)
                if res == null then