コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }