| // RUN_PIPELINE_TILL: CODEGEN | |
| import kotlin.reflect.KProperty | |
| class Delegate<T>(val data: T) { | |
| operator fun getValue(thisRef: Nothing?, prop: KProperty<*>): T = data | |
| } | |
| fun makeIntDelegate(t: Int): Delegate<Int> = Delegate(t) | |
| fun <TT> makeDelegate(t: TT): Delegate<TT> = Delegate(t) | |
| fun <M> materialize(): M = null!! | |
| fun <M2> materialize2(): M2 = null!! | |
| fun <Q> id(v: Q): Q = v | |
| val x by makeIntDelegate(run { | |
| val x: String = materialize() | |
| materialize2() | |
| }) | |
| /* GENERATED_FIR_TAGS: checkNotNullCall, classDeclaration, functionDeclaration, lambdaLiteral, localProperty, | |
| nullableType, operator, primaryConstructor, propertyDeclaration, propertyDelegate, starProjection, typeParameter */ |