示例#1
0
        internal static FailedArgumentConversionArityResult?Validate(
            SymbolResult symbolResult,
            IArgument argument,
            int minimumNumberOfValues,
            int maximumNumberOfValues
            )
        {
            var argumentResult = symbolResult switch
            {
                ArgumentResult a => a,
                _ => symbolResult.Root !.FindResultFor(argument)
            };

            var tokenCount = argumentResult?.Tokens.Count ?? 0;

            if (tokenCount < minimumNumberOfValues)
            {
                if (symbolResult !.UseDefaultValueFor(argument))
                {
                    return(null);
                }

                return(new MissingArgumentConversionResult(
                           argument,
                           symbolResult.ValidationMessages.RequiredArgumentMissing(symbolResult)
                           ));
            }

            if (tokenCount > maximumNumberOfValues)
            {
                return(new TooManyArgumentsConversionResult(
                           argument,
                           symbolResult !.ValidationMessages.ExpectsOneArgument(symbolResult)
                           ));
            }

            return(null);
        }
示例#2
0
 internal static FailedArgumentConversionArityResult Validate(
     ArgumentResult argumentResult) =>
 Validate(argumentResult.Parent,
          argumentResult.Argument,
          argumentResult.Argument.Arity.MinimumNumberOfValues,
          argumentResult.Argument.Arity.MaximumNumberOfValues);