Ejemplo n.º 1
0
        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));
 }
Ejemplo n.º 3
0
 public JsNode VisitNamedArgumentResolveResult(NamedArgumentResolveResult res)
 {
     throw new NotImplementedException("VisitNamedArgumentResolveResult");
 }
Ejemplo n.º 4
0
 public virtual object VisitNamedArgumentResolveResult(NamedArgumentResolveResult rr, object data)
 {
     VisitChildResolveResults(rr, data);
     return(null);
 }