Stop subtyping constraint search if equality constraints for...

all not fixed type vars are found
#KT-35626 fixed
This commit is contained in:
Ilya Chernikov
2020-02-21 16:39:52 +01:00
parent b6c9432334
commit 70c89a28e1
46 changed files with 211 additions and 63 deletions
@@ -12,6 +12,6 @@ fun test(x: List<Int>, y: List<String>) {
A("", x) checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><A<Any?>>() }
A("", y) checkType { _<A<String?>>() }
A<CharSequence, String>("", <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>)
A<CharSequence, String>("", <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>)
A<CharSequence, String>("", y)
}
@@ -14,5 +14,5 @@ fun test(x: List<Int>, y: List<String>) {
Outer<Int>().Inner<CharSequence, String, Int>("", y, 1) checkType { _<Outer<Int>.Inner<CharSequence>>() }
Outer<Int>().Inner("", x, 1) checkType { <!NI;UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Outer<Int>.Inner<Any>>() }
Outer<Int>().Inner<CharSequence, String, Int>("", <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>, 1)
Outer<Int>().Inner<CharSequence, String, Int>("", <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>, 1)
}
@@ -10,12 +10,12 @@ public class A {
class Inv<T>
fun test(x: Inv<Int>, y: Inv<String>) {
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>A<!>("", <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH!>x<!>)
<!OI;TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS!>A<!>("", <!NI;TYPE_MISMATCH!>x<!>)
A("", y)
A<String>("", <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>)
A<Any>("", <!NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>)
A<Any>("", <!NI;TYPE_MISMATCH, TYPE_MISMATCH!>x<!>)
A<String>("", y)
A<CharSequence>("", <!TYPE_MISMATCH!>y<!>)
}