nitc :: MClassDef :: full_name=
The short-name of the class is used for introduction. Example: "my_module$MyClass"
The full-name of the class is used for refinement. Example: "my_module$intro_module::MyClass"
# The module and class name separated by a '$'.
#
# The short-name of the class is used for introduction.
# Example: "my_module$MyClass"
#
# The full-name of the class is used for refinement.
# Example: "my_module$intro_module::MyClass"
redef var full_name is lazy do
if is_intro then
# public gives 'p$A'
# private gives 'p::m$A'
return "{mmodule.namespace_for(mclass.visibility)}${mclass.name}"
else if mclass.intro_mmodule.mpackage != mmodule.mpackage then
# public gives 'q::n$p::A'
# private gives 'q::n$p::m::A'
return "{mmodule.full_name}${mclass.full_name}"
else if mclass.visibility > private_visibility then
# public gives 'p::n$A'
return "{mmodule.full_name}${mclass.name}"
else
# private gives 'p::n$::m::A' (redundant p is omitted)
return "{mmodule.full_name}$::{mclass.intro_mmodule.name}::{mclass.name}"
end
end
src/model/model.nit:684,2--707,4