private ConditionType?GetConditionTypeForParameter( ICSharpArgumentInfo argumentInfo, [CanBeNull] IContractAnnotationFDT contractAnnotationFdt) { var matchingParameter = argumentInfo.MatchingParameter; if (matchingParameter != null) { var parameter = matchingParameter.Element; if (contractAnnotationFdt != null) { var conditionType = GetContractAnnotationConditionTypeForParameter(contractAnnotationFdt, parameter); if (conditionType != null) { return(conditionType); } } return(GetAssertionConditionAnnotationConditionType(parameter)); } return(null); }
private static ConditionType?GetContractAnnotationConditionTypeForParameter( IContractAnnotationFDT contractAnnotationFdt, IParameter parameter) { foreach (var row in contractAnnotationFdt.Rows) { if (row.MethodReturn == ContractAnnotationValue.HALT) { if (row.Input.Length == 1) { var contractAnnotationValue = row.Input[0].First == parameter.ShortName ? row.Input[0].Second : (ContractAnnotationValue?)null; switch (contractAnnotationValue) { case ContractAnnotationValue.TRUE: case ContractAnnotationValue.FALSE: return(ConditionType.TrueOrFalseCheck); case ContractAnnotationValue.NULL: case ContractAnnotationValue.NOT_NULL: return(ConditionType.NullEqualityCheck); } } } } return(null); }