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
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
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
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
# 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