private ConditionType?GetConditionTypeForParameter( ICSharpArgumentInfo argumentInfo, [CanBeNull] FunctionDefinitionTable functionDefinitionTable) { var matchingParameter = argumentInfo.MatchingParameter; if (matchingParameter != null) { var parameter = matchingParameter.Element; if (functionDefinitionTable != null) { var conditionType = GetContractAnnotationConditionTypeForParameter(functionDefinitionTable, parameter); if (conditionType != null) { return(conditionType); } } return(GetAssertionConditionAnnotationConditionType(parameter)); } return(null); }
private static ConditionType?GetContractAnnotationConditionTypeForParameter( FunctionDefinitionTable functionDefinitionTable, IParameter parameter) { foreach (var row in functionDefinitionTable.Rows) { if (row.FunctionReturn == ContractAnnotationValue.HALT) { if (row.Input.Count == 1) { var contractAnnotationValue = row.Input[0].ParameterName == parameter.ShortName ? row.Input[0].Value : (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); }