Entry point to build contract (define the contract facet and define the contract method verification)

Property definitions

nitc :: contracts $ MMethodDef :: construct_contract
	# Entry point to build contract (define the contract facet and define the contract method verification)
	private fun construct_contract(v: ContractsVisitor, n_signature: ASignature, n_annotations: Array[AAnnotation], mcontract: MContract, exist_contract: Bool)
	do
		v.define_signature(mcontract, n_signature, mproperty.intro.msignature)
		if not exist_contract and not is_intro then no_intro_contract(v, mcontract, n_annotations)
		v.build_contract(n_annotations, mcontract, mclassdef)
		# Check if the contract must be called to know if it's needed to construct the facet
		if mcontract.is_called(v, self) then mproperty.define_contract_facet(v, mclassdef, mcontract)
	end
src/contracts.nit:661,2--669,4