Property definitions

nitc $ SeparateCompiler :: build_class_compilation_info
	protected fun build_class_compilation_info(mclass: MClass): ClassCompilationInfo
	do
		var mtype = mclass.intro.bound_mtype
		var rta = runtime_type_analysis
		var is_dead = rta != null and not rta.live_classes.has(mclass)

		# While the class may be dead, some part of separately compiled code may use symbols associated to the class, so
		# in order to compile and link correctly the C code, these symbols should be declared and defined.
		var need_corpse = is_dead and mtype.is_c_primitive or mclass.kind == extern_kind or mclass.kind == enum_kind

		var compilation_info = new ClassCompilationInfo(mclass, is_dead, need_corpse)
		return compilation_info
	end
src/compiler/separate_compiler.nit:1055,2--1067,4

nitc $ SeparateErasureCompiler :: build_class_compilation_info
	redef fun build_class_compilation_info(mclass)
	do
		var ccinfo = super
		var mtype = ccinfo.mtype
		var rta = runtime_type_analysis
		var is_dead = false # mclass.kind == abstract_kind or mclass.kind == interface_kind
		if not is_dead and rta != null and not rta.live_classes.has(mclass) and not mtype.is_c_primitive and mclass.name != "NativeArray" then
			is_dead = true
		end
		ccinfo.is_dead = is_dead
		return ccinfo
	end
src/compiler/separate_erasure_compiler.nit:408,2--419,4