This project is read-only.


Rename shows invisible conflict with too much type inference


static void Main(string[] args) {
    Infer(o2 =>
            (o, a) => M(null, new { }, o2),
            M(null, new { }, o2),
            new { }

static void Infer<T>(Func<int, T> f) { }
static void Infer<T>(Func<string, T> f) { }

static T Infer<T, U>(Func<T, U, T> f, T t, U u) { return default(T); }

static int M<T>(string d, T infer, int spc, int opt = 0) { return 0; }
static string N<T>(Array d, T infer, string spc) { return null; }
Rename N to M.
It will correctly say 1 Unresolvable Conflict, but it won't show where it is.


Pilchie wrote Jul 22, 2014 at 5:54 PM

With recent bits, we no longer see the invisible conflict. We just see the definition renamed without any reports of conflicts. While there is a conflict, we aren't sure that there is enough value to justify detecting it. Is there any reasonable case that you know of where people would run into this sort of issue?