X-Git-Url: http://nitlanguage.org diff --git a/src/loader.nit b/src/loader.nit index 58d3506..65e7c67 100644 --- a/src/loader.nit +++ b/src/loader.nit @@ -330,8 +330,21 @@ redef class ModelBuilder # Return the mgroup associated to a directory path. # If the directory is not a group null is returned. + # + # Note: `paths` is also used to look for mgroups fun get_mgroup(dirpath: String): nullable MGroup do + if not dirpath.file_exists then do + for p in paths do + var try = p / dirpath + if try.file_exists then + dirpath = try + break label + end + end + return null + end label + var rdp = module_absolute_path(dirpath) if mgroups.has_key(rdp) then return mgroups[rdp] @@ -373,7 +386,7 @@ redef class ModelBuilder 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) + var s = new FileReader.open(readme) while not s.eof do mdoc.content.add(s.read_line) end @@ -417,7 +430,7 @@ redef class ModelBuilder self.toolcontext.info("load module {filename}", 2) # Load the file - var file = new IFStream.open(filename) + var file = new FileReader.open(filename) var lexer = new Lexer(new SourceFile(filename, file)) var parser = new Parser(lexer) var tree = parser.parse @@ -527,7 +540,14 @@ redef class ModelBuilder nmodules.add(nmodule) self.mmodule2nmodule[mmodule] = nmodule + var source = nmodule.location.file + if source != null then + assert source.mmodule == null + source.mmodule = mmodule + end + if decl != null then + # Extract documentation var ndoc = decl.n_doc if ndoc != null then var mdoc = ndoc.to_mdoc @@ -536,6 +556,8 @@ redef class ModelBuilder else advice(decl, "missing-doc", "Documentation warning: Undocumented module `{mmodule}`") end + # Is the module a test suite? + mmodule.is_test_suite = not decl.get_annotations("test_suite").is_empty end return mmodule @@ -670,6 +692,11 @@ redef class MGroup end +redef class SourceFile + # Associated mmodule, once created + var mmodule: nullable MModule = null +end + redef class AStdImport # The imported module once determined var mmodule: nullable MModule = null