--- /dev/null
+// CS1940: Ambiguous implementation of the query pattern `Select' for source type `string[]'
+// Line: 11
+
+using System;
+using System.Collections.Generic;
+
+class Multiple
+{
+ public static void Main ()
+ {
+ var q = from x in new [] { "a", "b", "c" } select x;
+ }
+}
+
+static class Y
+{
+ public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector)
+ {
+ return null;
+ }
+}
+
+static class X
+{
+ public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector)
+ {
+ return null;
+ }
+}
\ No newline at end of file
bool OverloadResolver.IErrorHandler.AmbiguousCandidates (ResolveContext ec, MemberSpec best, MemberSpec ambiguous)
{
+ var emg = mg as ExtensionMethodGroupExpr;
+ var type = emg == null ? mg.InstanceExpression : emg.ExtensionExpression;
+
ec.Report.SymbolRelatedToPreviousError (best);
ec.Report.SymbolRelatedToPreviousError (ambiguous);
ec.Report.Error (1940, loc, "Ambiguous implementation of the query pattern `{0}' for source type `{1}'",
- best.Name, mg.InstanceExpression.GetSignatureForError ());
+ best.Name, type.Type.GetSignatureForError ());
return true;
}