From fb49dfb5f5e6326c48e2683d64dfe3c3728ea2a7 Mon Sep 17 00:00:00 2001 From: Jean-Sebastien Gelinas Date: Thu, 23 Jul 2009 01:25:30 -0400 Subject: [PATCH] tools: add Location to MMModule Signed-off-by: Jean-Sebastien Gelinas Signed-off-by: Jean Privat --- src/abstracttool.nit | 2 +- src/compiling/compiling.nit | 4 ++-- src/compiling/compiling_global.nit | 2 +- src/metamodel/abstractmetamodel.nit | 9 +++++---- src/syntax/syntax.nit | 3 ++- src/syntax/syntax_base.nit | 6 +++--- 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/abstracttool.nit b/src/abstracttool.nit index cbf42ce..35ba6fe 100644 --- a/src/abstracttool.nit +++ b/src/abstracttool.nit @@ -98,7 +98,7 @@ end redef class MMModule fun dump_module_info do - var p = filename.file_path + var p = location.file.file_path var fname = "{p}/{name}" var f = new OFStream.open("{fname}.class_hierarchy.new.dot") f.write(class_specialization_hierarchy.to_dot) diff --git a/src/compiling/compiling.nit b/src/compiling/compiling.nit index b90ca12..d89a2d6 100644 --- a/src/compiling/compiling.nit +++ b/src/compiling/compiling.nit @@ -47,7 +47,7 @@ redef class MMModule files.add("{tc.compdir}/{m.name}._sep.c") tc.info("Generating C code for module: {m.name}",2) m.compile_separate_module(tc, ga) - var native_name = m.filename.strip_extension(".nit") + var native_name = m.location.file.strip_extension(".nit") if (native_name + "_nit.h").file_exists then includes.add("-I {native_name.dirname}") end @@ -110,7 +110,7 @@ redef class MMModule do var v = new GlobalCompilerVisitor(self, tc, ga) v.add_decl("#include ") - var native_name = filename.strip_extension(".nit") + var native_name = location.file.strip_extension(".nit") native_name += ("_nit.h") if native_name.file_exists then v.add_decl("#include <{native_name.basename("")}>") declare_class_tables_to_c(v) diff --git a/src/compiling/compiling_global.nit b/src/compiling/compiling_global.nit index ddd6582..31bd86b 100644 --- a/src/compiling/compiling_global.nit +++ b/src/compiling/compiling_global.nit @@ -511,7 +511,7 @@ redef class MMModule # Compile module file for the current module fun compile_local_table_to_c(v: GlobalCompilerVisitor) do - v.add_instr("const char *LOCATE_{name} = \"{filename}\";") + v.add_instr("const char *LOCATE_{name} = \"{location.file}\";") if v.tc.global or _local_table.is_empty then return diff --git a/src/metamodel/abstractmetamodel.nit b/src/metamodel/abstractmetamodel.nit index 4844ff3..6eb24b9 100644 --- a/src/metamodel/abstractmetamodel.nit +++ b/src/metamodel/abstractmetamodel.nit @@ -19,6 +19,7 @@ package abstractmetamodel import partial_order +import location # The main singleton which knows everything class MMContext @@ -120,8 +121,8 @@ class MMModule # The directory of the module readable var _directory: MMDirectory - # The filename of the module - readable var _filename: String + # Location of this module + readable var _location: Location # Module dependence hierarchy element readable var _mhe: nullable PartialOrderElement[MMModule] @@ -153,13 +154,13 @@ class MMModule # Dictionary of global classes var _global_class_by_name: Map[Symbol, MMGlobalClass] = new HashMap[Symbol, MMGlobalClass] - protected init(name: Symbol, dir: MMDirectory, context: MMContext, filename: String) + protected init(name: Symbol, dir: MMDirectory, context: MMContext, loc: Location) do _name = name _directory = dir _context = context _full_name = dir.full_name_for(name) - _filename = filename + _location = loc end # Register that a module is imported with a visibility diff --git a/src/syntax/syntax.nit b/src/syntax/syntax.nit index 8d3f7c8..0e18983 100644 --- a/src/syntax/syntax.nit +++ b/src/syntax/syntax.nit @@ -42,7 +42,8 @@ special ModuleLoader end var node_module = node_tree.n_base assert node_module isa AModule - var module = new MMSrcModule(context, node_module, dir, name, filename) + var module_loc = new Location.with_file(filename) + var module = new MMSrcModule(context, node_module, dir, name, module_loc) return module end diff --git a/src/syntax/syntax_base.nit b/src/syntax/syntax_base.nit index 925a740..23d9973 100644 --- a/src/syntax/syntax_base.nit +++ b/src/syntax/syntax_base.nit @@ -29,9 +29,9 @@ special MMModule # Concrete NIT source local classs by name readable var _src_local_classes: Map[Symbol, MMSrcLocalClass] - init(c: MMContext, source: AModule, dir: MMDirectory, name: Symbol, filename: String) + init(c: MMContext, source: AModule, dir: MMDirectory, name: Symbol, loc: Location) do - super(name, dir, c, filename) + super(name, dir, c, loc) _node = source _src_local_classes = new HashMap[Symbol, MMSrcLocalClass] end @@ -368,7 +368,7 @@ special Visitor fun locate(n: nullable PNode): String do if n != null then return n.locate - return _module.filename + return _module.location.file end # Check conformity and display error -- 1.7.9.5