Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }