From: Jean Privat Date: Mon, 15 Jun 2009 18:36:23 +0000 (-0400) Subject: metamodel: MMLocalClass::init takes the MMModule X-Git-Tag: v0.3~262 X-Git-Url: http://nitlanguage.org metamodel: MMLocalClass::init takes the MMModule Also remove the MMModule::add_local_class method Signed-off-by: Jean Privat --- diff --git a/src/metamodel/abstractmetamodel.nit b/src/metamodel/abstractmetamodel.nit index e69f4ab..65b98c0 100644 --- a/src/metamodel/abstractmetamodel.nit +++ b/src/metamodel/abstractmetamodel.nit @@ -220,13 +220,6 @@ class MMModule return _local_class_by_global[c] end - # Register a local class to the module - meth add_local_class(c: MMLocalClass) - do - c._module = self - _local_classes.add(c) - end - # Get a local class by its name meth class_by_name(n: Symbol): MMLocalClass do @@ -375,10 +368,12 @@ class MMLocalClass readable attr _properties_by_name: Map[Symbol, Array[MMGlobalProperty]] # Create a new class with a given name and arity - protected init(name: Symbol, arity: Int) + protected init(mod: MMModule, name: Symbol, arity: Int) do + _module = mod _name = name _arity = arity + mod._local_classes.add(self) end # The corresponding local class in another module diff --git a/src/metamodel/inheritance.nit b/src/metamodel/inheritance.nit index 870f266..a739844 100644 --- a/src/metamodel/inheritance.nit +++ b/src/metamodel/inheritance.nit @@ -419,8 +419,7 @@ special MMLocalClass init(mod: MMModule, g: MMGlobalClass) do var cla = g.intro - super(cla.name, cla.arity) - mod.add_local_class(self) + super(mod, cla.name, cla.arity) set_global(g) end end diff --git a/src/syntax/mmbuilder.nit b/src/syntax/mmbuilder.nit index 1f71787..cdcf45e 100644 --- a/src/syntax/mmbuilder.nit +++ b/src/syntax/mmbuilder.nit @@ -523,8 +523,7 @@ redef class PClassdef end local_class.nodes.add(self) else - local_class = new MMSrcLocalClass(name, self, arity) - mod.add_local_class(local_class) + local_class = new MMSrcLocalClass(mod, name, self, arity) local_classes[name] = local_class if not mod.has_global_class_named(name) then local_class.new_global diff --git a/src/syntax/syntax_base.nit b/src/syntax/syntax_base.nit index e7311a8..259cf9a 100644 --- a/src/syntax/syntax_base.nit +++ b/src/syntax/syntax_base.nit @@ -68,9 +68,9 @@ special MMConcreteClass # Concrete NIT source properties by name readable attr _src_local_properties: Map[Symbol, MMLocalProperty] - init(n: Symbol, cla: PClassdef, a: Int) + init(mod: MMSrcModule, n: Symbol, cla: PClassdef, a: Int) do - super(n, a) + super(mod, n, a) _nodes = [cla] _src_local_properties = new HashMap[Symbol, MMLocalProperty] end