metamodel: MMLocalClass::init takes the MMModule
authorJean Privat <jean@pryen.org>
Mon, 15 Jun 2009 18:36:23 +0000 (14:36 -0400)
committerJean Privat <jean@pryen.org>
Wed, 24 Jun 2009 19:47:32 +0000 (15:47 -0400)
Also remove the MMModule::add_local_class method

Signed-off-by: Jean Privat <jean@pryen.org>

src/metamodel/abstractmetamodel.nit
src/metamodel/inheritance.nit
src/syntax/mmbuilder.nit
src/syntax/syntax_base.nit

index e69f4ab..65b98c0 100644 (file)
@@ -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
index 870f266..a739844 100644 (file)
@@ -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
index 1f71787..cdcf45e 100644 (file)
@@ -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
index e7311a8..259cf9a 100644 (file)
@@ -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