nitc :: Phase :: process_nclassdef
Note that the order of the visit is the one of the file @toimplement
# Specific actions to execute on the tree of a class definition
# Note that the order of the visit is the one of the file
# @toimplement
fun process_nclassdef(nclassdef: AClassdef) do end
src/phase.nit:244,2--247,51
redef fun process_nclassdef(nclassdef)
do
if nclassdef isa AStdClassdef and nclassdef.n_extern_code_block != null then
verify_foreign_code_on_node( nclassdef.n_extern_code_block.as(not null) )
end
end
src/ffi/light_ffi_base.nit:56,2--61,4
redef fun process_nclassdef(nclassdef)
do
if not nclassdef isa AStdClassdef then return
var code_block = nclassdef.n_extern_code_block
if code_block == null then return
if nclassdef.n_kwredef != null then
# A redef cannot specify a different extern type
toolcontext.error(nclassdef.location, "FFI Error: only the introduction of a class can declare an extern type.")
return
end
var ftype = code_block.language.get_ftype(code_block, nclassdef)
nclassdef.mclassdef.ftype_cache = ftype
nclassdef.mclassdef.ftype_computed = true
end
src/ffi/extern_classes.nit:34,2--50,4
redef fun process_nclassdef(nclassdef)
do
if not nclassdef isa AStdClassdef then return
var mclassdef = nclassdef.mclassdef
if mclassdef == null then return
var mclass = mclassdef.mclass
# We only need to do this once per class
if not mclassdef.is_intro then return
if mclass.kind != extern_kind then return
mclass.compute_ftype(self)
end
src/ffi/extern_classes.nit:67,2--81,4
redef fun process_nclassdef(nclassdef)
do
if not nclassdef isa AStdClassdef then return
var serialize_by_default = nclassdef.how_serialize
if serialize_by_default != null then
# Add `super Serializable`
var sc = toolcontext.parse_superclass("Serializable")
sc.location = nclassdef.location
nclassdef.n_propdefs.add sc
# Add services
var per_attribute = not serialize_by_default
generate_serialization_method(nclassdef, per_attribute)
generate_deserialization_init(nclassdef)
end
end
src/frontend/serialization_model_phase.nit:140,2--158,4
# Lookup for `nclassdef` annotations
redef fun process_nclassdef(nclassdef) do
var mclassdef = nclassdef.mclassdef
if mclassdef == null then return
for npropdef in nclassdef.n_propdefs do
if not npropdef isa AAnnotPropdef then continue
mclassdef.annotations.add npropdef.n_atid.n_id.text
end
end
src/frontend/parse_annotations.nit:68,2--77,4