dotnet/roslyn

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

Open

#20,249 opened on Jun 15, 2017

View on GitHub
 (0 comments) (0 reactions) (0 assignees)C# (20,414 stars) (4,257 forks)batch import
Area-CompilersBugLanguage-C#help wanted

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

Contributor guide

It looks like OverloadResolution.GetParameterType doesn't perform complete check before digging through param array · dotnet/roslyn#20249 | Good First Issue