This project is read-only.
1

Resolved

Rename shows invisible conflict with too much type inference

description

Source:
static void Main(string[] args) {
    Infer(o2 =>
        Infer(
            (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.

comments

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?