dotnet/roslyn

It looks like OverloadResolution.GetParameterType doesn't perform complete check before digging through param array

Open

#20.249 aberto em 15 de jun. de 2017

Ver no GitHub
 (0 comments) (0 reactions) (0 assignees)C# (4.257 forks)batch import
Area-CompilersBugLanguage-C#help wanted

Métricas do repositório

Stars
 (20.414 stars)
Métricas de merge de PR
 (Mesclagem média 6d 17h) (256 fundiu PRs em 30d)

Description

The check that the parameter is the last parameter is not performed, but I believe it should be see OverloadResolution.IsValidParams.

private static TypeSymbol GetParameterType(int argIndex, MemberAnalysisResult result, ImmutableArray<ParameterSymbol> parameters, out RefKind refKind)
        {
            int paramIndex = result.ParameterFromArgument(argIndex);
            ParameterSymbol parameter = parameters[paramIndex];
            refKind = parameter.RefKind;

            if (result.Kind == MemberResolutionKind.ApplicableInExpandedForm &&
                parameter.IsParams && parameter.Type.IsSZArray())
            {
                return ((ArrayTypeSymbol)parameter.Type).ElementType;
            }
            else
            {
                return parameter.Type;
            }
        }

Guia do colaborador