KT-1457 Subtyping doesn't work when type parameter is used indirectly in supertype declaration
This commit is contained in:
@@ -471,6 +471,21 @@ public class JetTypeCheckerTest extends JetLiteFixture {
|
||||
assertSupertypes("Derived1_inT<Int>", "Derived_T<Int>", "Base_T<Int>", "Any", "Base_inT<Int>");
|
||||
}
|
||||
|
||||
public void testEffectiveProjectionKinds() throws Exception {
|
||||
assertSubtype("Tuple1<Int>", "Tuple1<Int>");
|
||||
assertSubtype("Tuple1<out Int>", "Tuple1<out Int>");
|
||||
assertSubtype("Tuple1<out Int>", "Tuple1<Int>");
|
||||
assertSubtype("Tuple1<Int>", "Tuple1<out Int>");
|
||||
assertSubtype("Tuple1<in Int>", "Tuple1<out Any?>");
|
||||
assertSubtype("Tuple1<out Any?>", "Tuple1<in String>");
|
||||
assertSubtype("Base_inT<Int>", "Base_inT<Int>");
|
||||
assertSubtype("Base_inT<in Int>", "Base_inT<in Int>");
|
||||
assertSubtype("Base_inT<in Int>", "Base_inT<Int>");
|
||||
assertSubtype("Base_inT<Int>", "Base_inT<in Int>");
|
||||
assertSubtype("Base_inT<out Int>", "Base_inT<out Any?>");
|
||||
assertSubtype("Base_inT<out Any?>", "Base_inT<out Int>");
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
private void assertSupertypes(String typeStr, String... supertypeStrs) {
|
||||
|
||||
Reference in New Issue
Block a user