Beispiel #1
0
 public OverloadChooser(IParameterCallable[] overloads, ParseInfo parseInfo, Scope scope, DocRange genericErrorRange, DocRange callRange, OverloadError errorMessages)
 {
     AllOverloads = overloads
                    .OrderBy(overload => overload.Parameters.Length)
                    .ToArray();
     CurrentOptions         = AllOverloads.ToList();
     this.parseInfo         = parseInfo;
     this.scope             = scope;
     this.genericErrorRange = genericErrorRange;
     CallRange          = callRange;
     this.ErrorMessages = errorMessages;
 }
        private bool SetParameterCount(int numberOfParameters)
        {
            Overload = AllOverloads
                       .OrderBy(o => Math.Abs(numberOfParameters - o.Parameters.Length))
                       .FirstOrDefault();

            CurrentOptions = CurrentOptions
                             .Where(o => numberOfParameters <= o.Parameters.Length)
                             .ToList();

            if (CurrentOptions.Count == 0)
            {
                parseInfo.Script.Diagnostics.Error(
                    string.Format(ErrorMessages.BadParameterCount, numberOfParameters),
                    genericErrorRange
                    );
                return(false);
            }
            return(true);
        }