[FIR] Fix type constraint for type parameter ^KT-45345 Fixed

This commit is contained in:
Ivan Kochurkin
2021-10-06 21:48:56 +03:00
parent a0fb60f201
commit 2e1f455d9c
9 changed files with 69 additions and 30 deletions
@@ -1,6 +1,6 @@
// !LANGUAGE: +NewInference
inline fun <T, reified S> foo(x: T?, y: T): T {
if (x is S) return x
if (x is S) return <!RETURN_TYPE_MISMATCH!>x<!>
return y
}
@@ -67,6 +67,24 @@ fun kt4565_2(a: SomeClass?) {
}
}
inline fun <reified T : SomeClass> kt45345(a: SomeClass?) {
if (a?.data is T) {
a.data
}
}
inline fun <reified T : U, U : SomeClass> kt45345_2(a: SomeClass?) {
if (a?.data is T) {
a.data
}
}
inline fun <reified T : U, U : SomeClass?> kt45345_3(a: SomeClass?) {
if (a?.data is T) {
a<!UNSAFE_CALL!>.<!>data
}
}
class A(val y: Int)
fun kt7491_1() {
@@ -67,6 +67,24 @@ fun kt4565_2(a: SomeClass?) {
}
}
inline fun <reified T : SomeClass> kt45345(a: SomeClass?) {
if (a?.data is T) {
<!DEBUG_INFO_SMARTCAST!>a<!>.data
}
}
inline fun <reified T : U, U : SomeClass> kt45345_2(a: SomeClass?) {
if (a?.data is T) {
<!DEBUG_INFO_SMARTCAST!>a<!>.data
}
}
inline fun <reified T : U, U : SomeClass?> kt45345_3(a: SomeClass?) {
if (a?.data is T) {
a<!UNSAFE_CALL!>.<!>data
}
}
class A(val y: Int)
fun kt7491_1() {
@@ -10,6 +10,9 @@ public fun kt11313(/*0*/ arg: HttpExchange?): kotlin.Unit
public fun kt1635(/*0*/ s: kotlin.String?): kotlin.Unit
public fun kt2127(): kotlin.Unit
public fun kt3356(/*0*/ s: kotlin.String?): kotlin.Int
public inline fun </*0*/ reified T : SomeClass> kt45345(/*0*/ a: SomeClass?): kotlin.Unit
public inline fun </*0*/ reified T : U, /*1*/ U : SomeClass> kt45345_2(/*0*/ a: SomeClass?): kotlin.Unit
public inline fun </*0*/ reified T : U, /*1*/ U : SomeClass?> kt45345_3(/*0*/ a: SomeClass?): kotlin.Unit
public fun kt4565_1(/*0*/ a: SomeClass?): kotlin.Unit
public fun kt4565_2(/*0*/ a: SomeClass?): kotlin.Unit
public fun kt6840_1(/*0*/ s: kotlin.String?): kotlin.Unit