nit: Added link to `CONTRIBUTING.md` from the README
[nit.git] / src / loader.nit
index c0891a1..967d335 100644 (file)
@@ -381,9 +381,9 @@ redef class ModelBuilder
 
                if mgroup == null then
                        # singleton package
-                       var mpackage = new MPackage(pn, model)
-                       mgroup = new MGroup(pn, mpackage, null) # same name for the root group
-                       mgroup.filepath = path
+                       var loc = new Location.opaque_file(path)
+                       var mpackage = new MPackage(pn, model, loc)
+                       mgroup = new MGroup(pn, loc, mpackage, null) # same name for the root group
                        mpackage.root = mgroup
                        toolcontext.info("found singleton package `{pn}` at {path}", 2)
 
@@ -395,10 +395,8 @@ redef class ModelBuilder
                        end
                end
 
-               var src = new SourceFile.from_string(path, "")
-               var loc = new Location(src, 0, 0, 0, 0)
+               var loc = new Location.opaque_file(path)
                var res = new MModule(model, mgroup, pn, loc)
-               res.filepath = path
 
                identified_modules_by_path[rp] = res
                identified_modules_by_path[path] = res
@@ -483,17 +481,18 @@ redef class ModelBuilder
                        end
                end
 
+               var loc = new Location.opaque_file(dirpath)
                var mgroup
                if parent == null then
                        # no parent, thus new package
                        if ini != null then pn = ini["package.name"] or else pn
-                       var mpackage = new MPackage(pn, model)
-                       mgroup = new MGroup(pn, mpackage, null) # same name for the root group
+                       var mpackage = new MPackage(pn, model, loc)
+                       mgroup = new MGroup(pn, loc, mpackage, null) # same name for the root group
                        mpackage.root = mgroup
                        toolcontext.info("found package `{mpackage}` at {dirpath}", 2)
                        mpackage.ini = ini
                else
-                       mgroup = new MGroup(pn, parent.mpackage, parent)
+                       mgroup = new MGroup(pn, loc, parent.mpackage, parent)
                        toolcontext.info("found sub group `{mgroup.full_name}` at {dirpath}", 2)
                end
 
@@ -507,7 +506,6 @@ redef class ModelBuilder
                        mdoc.original_mentity = mgroup
                end
 
-               mgroup.filepath = dirpath
                mgroups[rdp] = mgroup
                return mgroup
        end
@@ -612,6 +610,11 @@ redef class ModelBuilder
                var keep = new Array[String]
                var res = new Array[String]
                for a in args do
+                       var stat = a.to_path.stat
+                       if stat != null and stat.is_dir then
+                               res.add a
+                               continue
+                       end
                        var l = identify_module(a)
                        if l == null then
                                keep.add a
@@ -1011,9 +1014,6 @@ redef class ModelBuilder
 end
 
 redef class MModule
-       # The path of the module source
-       var filepath: nullable String = null
-
        # Force the parsing of the module using `modelbuilder`.
        #
        # If the module was already parsed, the existing ASI is returned.
@@ -1037,6 +1037,7 @@ redef class MModule
 
                # build the mmodule
                nmodule.mmodule = self
+               self.location = nmodule.location
                modelbuilder.build_a_mmodule(mgroup, nmodule)
 
                modelbuilder.parsed_modules.add self