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

Property definitions

nitc $ Phase :: process_nclassdef
	# 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

nitc $ FFILanguageAssignationPhase :: process_nclassdef
	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

nitc $ ExternClassesTypingPhaseAst :: process_nclassdef
	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

nitc $ ExternClassesTypingPhaseModel :: process_nclassdef
	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

nitc $ SerializationPhasePreModel :: process_nclassdef
	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

nitc $ ParseAnnotationsPhase :: process_nclassdef
	# 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