nitc :: NeoModel :: to_mclassdef
MClassDef
from a node
.REQUIRE node.labels.has("MClassDef")
# Build a new `MClassDef` from a `node`.
#
# REQUIRE `node.labels.has("MClassDef")`
private fun to_mclassdef(model: Model, node: NeoNode): MClassDef do
var m = mentities.get_or_null(node.id.as(Int))
if m isa MClassDef then return m
assert node.labels.has("MClassDef")
var mmodule = to_mmodule(model, node.in_nodes("DEFINES").first)
var mtype = to_mtype(model, node.out_nodes("BOUNDTYPE").first).as(MClassType)
var location = to_location(node["location"].to_s)
var mclassdef = new MClassDef(mmodule, mtype, location)
mentities[node.id.as(Int)] = mclassdef
set_doc(node, mclassdef)
var supertypes = new Array[MClassType]
for sup in node.out_nodes("INHERITS") do
supertypes.add to_mtype(model, sup).as(MClassType)
end
mclassdef.set_supertypes(supertypes)
mclassdef.add_in_hierarchy
return mclassdef
end
src/neo.nit:433,2--454,4