| // RUN_PIPELINE_TILL: CODEGEN | |
| // 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 */ |