[FIR] Don't lose flexible types during capturing from expression
This commit is contained in:
committed by
Space Team
parent
06e88b559a
commit
eb8ce449e3
-22
@@ -1,22 +0,0 @@
|
||||
// !CHECK_TYPE
|
||||
|
||||
// FILE: Clazz.java
|
||||
public class Clazz<T> {
|
||||
public T getT() { return null; }
|
||||
public Clazz<? super T> getSuperClass() { return null; }
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
fun test(clazz: Clazz<*>) {
|
||||
clazz.t checkType { _<Any?>() }
|
||||
clazz.getSuperClass() checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Clazz<*>?>() }
|
||||
clazz.getSuperClass().t checkType { _<Any?>() }
|
||||
|
||||
clazz.superClass checkType { <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>_<!><Clazz<*>?>() }
|
||||
clazz.superClass.t checkType { _<Any?>() }
|
||||
|
||||
// See KT-9294
|
||||
if (clazz.superClass == null) {
|
||||
throw NullPointerException()
|
||||
}
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !CHECK_TYPE
|
||||
|
||||
// FILE: Clazz.java
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// WITH_STDLIB
|
||||
// WITH_REFLECT
|
||||
// FULL_JDK
|
||||
import java.lang.reflect.Field
|
||||
|
||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||
fun <@kotlin.internal.OnlyInputTypes T> assertEquals(expected: T, actual: T): T = actual
|
||||
|
||||
fun test(field: Field) {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("java.lang.Class<out kotlin.Any>?")!>assertEquals(
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("java.lang.Class<*>..java.lang.Class<*>?!")!>field.type<!>,
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("java.lang.Class<kotlin.Long>?")!>Long::class.javaPrimitiveType<!>
|
||||
)<!>
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// WITH_STDLIB
|
||||
// WITH_REFLECT
|
||||
// FULL_JDK
|
||||
import java.lang.reflect.Field
|
||||
|
||||
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
|
||||
fun <@kotlin.internal.OnlyInputTypes T> assertEquals(expected: T, actual: T): T = actual
|
||||
|
||||
fun test(field: Field) {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("java.lang.Class<out kotlin.Any>?")!>assertEquals(
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("(java.lang.Class<*>..java.lang.Class<*>?)")!>field.type<!>,
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("java.lang.Class<kotlin.Long>?")!>Long::class.javaPrimitiveType<!>
|
||||
)<!>
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package
|
||||
|
||||
@kotlin.Suppress(names = {"INVISIBLE_MEMBER", "INVISIBLE_REFERENCE"}) public fun </*0*/ @kotlin.internal.OnlyInputTypes T> assertEquals(/*0*/ expected: T, /*1*/ actual: T): T
|
||||
public fun test(/*0*/ field: java.lang.reflect.Field): kotlin.Unit
|
||||
|
||||
Reference in New Issue
Block a user