nclassdef.mclass = mclass
if not nmodule.mclass2nclassdef.has_key(mclass) then
nmodule.mclass2nclassdef[mclass] = nclassdef
+ nclassdef.all_defs = [nclassdef]
+ else
+ nmodule.mclass2nclassdef[mclass].all_defs.add(nclassdef)
end
end
var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object")
var mclass = nclassdef.mclass
if mclass == null then return # Skip error
- #var mclassdef = nclassdef.mclassdef.as(not null)
+
+ # In case of non-standard AClassdef, try to attach to an already existing mclassdef
+ var other_nclassdef = nmodule.mclass2nclassdef[mclass]
+ if other_nclassdef != nclassdef then
+ assert not nclassdef isa AStdClassdef
+ nclassdef.mclassdef = other_nclassdef.mclassdef
+ return
+ end
var names = new Array[String]
var bounds = new Array[MType]
var mclass: nullable MClass
# The associated MClassDef once build by a `ModelBuilder`
var mclassdef: nullable MClassDef
+ # All (self and other) definitions for the same mclassdef
+ var all_defs: nullable Array[AClassdef]
end
redef class AClasskind