dotnet/roslyn
Vedi su GitHubConfusing error message for overloaded generic delegate-accepting method
Open
#8603 aperta il 11 feb 2016
Area-CompilersBugConcept-Diagnostic Clarityhelp wanted
Metriche repository
- Star
- (20.414 star)
- Metriche merge PR
- (Merge medio 6g 17h) (256 PR mergiate in 30 g)
Descrizione
I have the following code:
using System;
class Program
{
static void Main()
{
M(x => { });
}
static void M(string s)
{
}
static void M<T>(Action<T> a)
{
}
}
It produces the following error:
CS1660 Cannot convert lambda expression to type 'string' because it is not a delegate type
I think that a human can clearly see that the code is attempting to call the delegate-accepting overload, but is missing a type argument (M<int>(x => { });) or explicit parameter type (M((int x) => { });).
But the compiler shows error message that's related to the first (string-accepting) overload, which I think is confusing.