Use constraint system for comparing for specificity against a generic signature.

Drop "discrimiate generics" mode where it's unneeded.
This commit is contained in:
Dmitry Petrov
2015-12-25 15:20:43 +03:00
parent aeefdffaab
commit 02daeac41b
14 changed files with 233 additions and 79 deletions
@@ -0,0 +1,9 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
object X1
object X2
fun <T1> foo(x: T1, f: (T1) -> T1) = X1
fun <T2> foo(xf: () -> T2, f: (T2) -> T2) = X2
val test: X2 = <!CANNOT_COMPLETE_RESOLVE!>foo<!>({ 0 }, { <!CANNOT_INFER_PARAMETER_TYPE!>it<!> -> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>it<!> <!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>+<!> 1 })