nitc :: MModule :: get_primitive_class
name
or abort
# Force to get the primitive class named `name` or abort
fun get_primitive_class(name: String): MClass
do
var cla = self.model.get_mclasses_by_name(name)
# Filter classes by introducing module
if cla != null then cla = [for c in cla do if self.in_importation <= c.intro_mmodule then c]
if cla == null or cla.is_empty then
if name == "Bool" and self.model.get_mclasses_by_name("Object") != null then
# Bool is injected because it is needed by engine to code the result
# of the implicit casts.
var loc = model.no_location
var c = new MClass(self, name, loc, null, enum_kind, public_visibility)
var cladef = new MClassDef(self, c.mclass_type, loc)
cladef.set_supertypes([object_type])
cladef.add_in_hierarchy
return c
end
print_error("Fatal Error: no primitive class {name} in {self}")
exit(1)
abort
end
if cla.length != 1 then
var msg = "Fatal Error: more than one primitive class {name} in {self}:"
for c in cla do msg += " {c.full_name}"
print_error msg
#exit(1)
end
return cla.first
end
src/model/model.nit:335,2--363,4