dotnet/roslyn

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

開放

#20,249 建立於 2017年6月15日

 (0 則留言) (0 個反應) (0 位負責人)C# (4,257 個分叉)batch import
Area-CompilersBugLanguage-C#help wanted

倉庫指標

星標
 (20,414 顆星)
PR 合併指標
 (平均合併 6天 17小時) (30 天內合併 256 個 PR)

描述

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

貢獻者指南