blob: 4dd43613a50e18f22923d7c683dd1e0d65dd3740 [file]
// RUN_PIPELINE_TILL: BACKEND
// DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_EXPRESSION -UNUSED_VARIABLE
import kotlin.reflect.KProperty1
class Scope {
abstract class Nested<T> {
abstract val key: Int
abstract val keyT: T
}
}
fun simple(a: Any?) {}
fun <K> id(x: K): K = x
fun test() {
simple(Scope.Nested<String>::key)
val a = id(Scope.Nested<String>::keyT)
a
val b = id(Scope.Nested<*>::keyT)
b
val c = id(Scope.Nested<out Number?>::keyT)
c
val d = id(Scope.Nested<*>::keyT <!UNCHECKED_CAST!>as Scope.Nested<Number><!>)
d
val g = id<KProperty1<Scope.Nested<*>, Any?>>(Scope.Nested<*>::keyT)
g
}
fun justResolve() {
val a = Scope.Nested<String>::key
val b = Scope.Nested<String>::keyT
val c = Scope.Nested<*>::keyT
val d = Scope.Nested<out Number?>::keyT
}
/* GENERATED_FIR_TAGS: asExpression, callableReference, capturedType, classDeclaration, functionDeclaration,
localProperty, nestedClass, nullableType, outProjection, propertyDeclaration, starProjection, typeParameter */