Property definitions

nitc $ CmdReturn :: defaultinit
# Retrieve all the mproperties that return somethinf of the `mentity` type.
#
# `mentity` must be a MClass or a MClassDef.
class CmdReturn
	super CmdEntityList

	redef fun init_results do
		if results != null then return new CmdSuccess

		var res = super
		if not res isa CmdSuccess then return res
		var mentity = self.mentity.as(not null)

		if mentity isa MClassDef then mentity = mentity.mclass
		if not mentity isa MClass then return new ErrorNotClass(mentity)

		var mentities = new HashSet[MEntity]
		for mproperty in model.collect_mproperties(filter) do
			if not mproperty isa MMethod then continue
			var msignature = mproperty.intro.msignature
			if msignature != null then
				var mtype = msignature.return_mtype
				if mtype == null then continue
				if mtype isa MNullableType then mtype = mtype.mtype
				if not mtype isa MClassType then continue
				if mtype.mclass != mentity then continue
				mentities.add mproperty
			end
		end
		results = mentities.to_a
		return res
	end
end
src/doc/commands/commands_usage.nit:56,1--88,3