model: intro `MModule::first_real_mmodule` to get the first non-fictive module
authorAlexis Laferrière <alexis.laf@xymus.net>
Tue, 31 Mar 2015 20:10:23 +0000 (16:10 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Thu, 2 Apr 2015 15:50:03 +0000 (11:50 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

src/compiler/abstract_compiler.nit
src/model/mmodule.nit

index 43fd172..011b146 100644 (file)
@@ -300,15 +300,8 @@ class MakefileToolchain
        # Get the default name of the executable to produce
        fun default_outname: String
        do
-               var mainmodule = compiler.mainmodule
-
-               # Search a non fictive module
-               var res = mainmodule.name
-               while mainmodule.is_fictive do
-                       mainmodule = mainmodule.in_importation.direct_greaters.first
-                       res = mainmodule.name
-               end
-               return res
+               var mainmodule = compiler.mainmodule.first_real_mmodule
+               return mainmodule.name
        end
 
        # Combine options and platform informations to get the final path of the outfile
index d88a0ba..ef548a8 100644 (file)
@@ -243,5 +243,15 @@ class MModule
        # Is `self` a unit test module used by `nitunit`?
        var is_test_suite: Bool = false is writable
 
+       # Get the first non `is_fictive` module greater than self
+       fun first_real_mmodule: MModule
+       do
+               var mmodule = self
+               while mmodule.is_fictive do
+                       mmodule = mmodule.in_importation.direct_greaters.first
+               end
+               return mmodule
+       end
+
        redef fun parent_concern do return mgroup
 end