IList <ResolveResult> GetArgumentsWithConversions(ResolveResult targetResolveResult, IParameterizedMember bestCandidateForNamedArguments) { var conversions = this.ArgumentConversions; ResolveResult[] args = new ResolveResult[arguments.Length]; for (int i = 0; i < args.Length; i++) { var argument = arguments[i]; if (this.IsExtensionMethodInvocation && i == 0 && targetResolveResult != null) { argument = targetResolveResult; } int parameterIndex = bestCandidate.ArgumentToParameterMap[i]; if (parameterIndex >= 0 && conversions[i] != Conversion.IdentityConversion) { // Wrap argument in ConversionResolveResult IType parameterType = bestCandidate.ParameterTypes[parameterIndex]; if (parameterType.Kind != TypeKind.Unknown) { if (arguments[i].IsCompileTimeConstant && conversions[i] != Conversion.None) { argument = new CSharpResolver(compilation).WithCheckForOverflow(CheckForOverflow).ResolveCast(parameterType, argument); } else { argument = new ConversionResolveResult(parameterType, argument, conversions[i], CheckForOverflow); } } } if (bestCandidateForNamedArguments != null && argumentNames[i] != null) { // Wrap argument in NamedArgumentResolveResult if (parameterIndex >= 0) { argument = new NamedArgumentResolveResult(bestCandidateForNamedArguments.Parameters[parameterIndex], argument, bestCandidateForNamedArguments); } else { argument = new NamedArgumentResolveResult(argumentNames[i], argument); } } args[i] = argument; } return(args); }
public virtual TResult VisitNamedArgumentResolveResult(NamedArgumentResolveResult rr, TData data) { VisitChildResolveResults(rr, data); return(default(TResult)); }
public JsNode VisitNamedArgumentResolveResult(NamedArgumentResolveResult res) { throw new NotImplementedException("VisitNamedArgumentResolveResult"); }
public virtual object VisitNamedArgumentResolveResult(NamedArgumentResolveResult rr, object data) { VisitChildResolveResults(rr, data); return(null); }