compiler: global compiler escape the module name
[nit.git] / src / modelbuilder.nit
index 30a0617..83f5e0e 100644 (file)
@@ -125,10 +125,8 @@ class ModelBuilder
 
        # Instantiate a modelbuilder for a model and a toolcontext
        # Important, the options of the toolcontext must be correctly set (parse_option already called)
-       init(model: Model, toolcontext: ToolContext)
+       init
        do
-               self.model = model
-               self.toolcontext = toolcontext
                assert toolcontext.modelbuilder_real == null
                toolcontext.modelbuilder_real = self
 
@@ -141,10 +139,8 @@ class ModelBuilder
                end
 
                var nit_dir = toolcontext.nit_dir
-               if nit_dir != null then
-                       var libname = "{nit_dir}/lib"
-                       if libname.file_exists then paths.add(libname)
-               end
+               var libname = "{nit_dir}/lib"
+               if libname.file_exists then paths.add(libname)
        end
 
        # Load a bunch of modules.
@@ -225,6 +221,12 @@ class ModelBuilder
                for mprop in props do
                        if not mtype.has_mproperty(mmodule, mprop) then continue
                        if not mmodule.is_visible(mprop.intro_mclassdef.mmodule, mprop.visibility) then continue
+
+                       # new-factories are invisible outside of the class
+                       if mprop isa MMethod and mprop.is_new and (not mtype isa MClassType or mprop.intro_mclassdef.mclass != mtype.mclass) then
+                               continue
+                       end
+
                        if res == null then
                                res = mprop
                                continue