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); }