nitcc: DFAStates are private
[nit.git] / src / modelbuilder.nit
index 7ccbfa4..3dbd389 100644 (file)
@@ -64,7 +64,7 @@ redef class ToolContext
                        mainmodule = mmodules.first
                else
                        # We need a main module, so we build it by importing all modules
-                       mainmodule = new MModule(modelbuilder.model, null, "<main>", new Location(null, 0, 0, 0, 0))
+                       mainmodule = new MModule(modelbuilder.model, null, mmodules.first.name, new Location(null, 0, 0, 0, 0))
                        mainmodule.set_imported_mmodules(mmodules)
                end
                for phase in phases_list do
@@ -79,7 +79,7 @@ redef class Phase
        # Called by the `ToolContext::run_global_phases`.
        #
        # `mainmodule` is the main module of the program.
-       # It could be an implicit module (called "<main>").
+       # It could be an implicit module (called like the first given_mmodules).
        #
        # `given_modules` is the list of explicitely requested modules.
        # from the command-line for instance.
@@ -474,10 +474,12 @@ class ModelBuilder
                var pn = rdp.basename(".nit")
                var mp = dirpath.join_path(pn + ".nit").simplify_path
 
+               var dirpath2 = dirpath
                if not mp.file_exists then
                        if pn == "src" then
                                # With a src directory, the group name is the name of the parent directory
-                               pn = rdp.dirname.basename("")
+                               dirpath2 = rdp.dirname
+                               pn = dirpath2.basename("")
                        else
                                return null
                        end
@@ -498,6 +500,17 @@ class ModelBuilder
                        mgroup = new MGroup(pn, parent.mproject, parent)
                        toolcontext.info("found sub group `{mgroup.full_name}` at {dirpath}", 2)
                end
+               var readme = dirpath2.join_path("README.md")
+               if not readme.file_exists then readme = dirpath2.join_path("README")
+               if readme.file_exists then
+                       var mdoc = new MDoc
+                       var s = new IFStream.open(readme)
+                       while not s.eof do
+                               mdoc.content.add(s.read_line)
+                       end
+                       mgroup.mdoc = mdoc
+                       mdoc.original_mentity = mgroup
+               end
                mgroup.filepath = dirpath
                mgroups[rdp] = mgroup
                return mgroup
@@ -616,7 +629,11 @@ class ModelBuilder
 
                if decl != null then
                        var ndoc = decl.n_doc
-                       if ndoc != null then mmodule.mdoc = ndoc.to_mdoc
+                       if ndoc != null then
+                               var mdoc = ndoc.to_mdoc
+                               mmodule.mdoc = mdoc
+                               mdoc.original_mentity = mmodule
+                       end
                end
 
                return mmodule