[IR] Use erased types in backing field initializer in case of generic delegated property

- Since neither IrProperty nor IrField is Type Parameter container
 using of proprty's type parameter in IrField related code leads to
 creation of "hanging" type parameters which should be considered as
 incorrect IR.
 - Such code designed to be prohibited in LV 1.5
 - The fix makes use of erased type in such case
 where type parameter is expected.
This commit is contained in:
Roman Artemev
2020-03-12 15:31:44 +03:00
committed by romanart
parent 13a73b67de
commit d27954a6d4
17 changed files with 919 additions and 33 deletions
@@ -13748,6 +13748,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/ir/serializationRegressions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@TestMetadata("deepGenericDelegatedProperty.kt")
public void testDeepGenericDelegatedProperty() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/deepGenericDelegatedProperty.kt");
}
@TestMetadata("dispatchReceiverValue.kt")
public void testDispatchReceiverValue() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/dispatchReceiverValue.kt");
@@ -1872,6 +1872,11 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest {
runTest("compiler/testData/ir/irText/types/coercionToUnitInLambdaReturnValue.kt");
}
@TestMetadata("genericDelegatedDeepProperty.kt")
public void testGenericDelegatedDeepProperty() throws Exception {
runTest("compiler/testData/ir/irText/types/genericDelegatedDeepProperty.kt");
}
@TestMetadata("genericFunWithStar.kt")
public void testGenericFunWithStar() throws Exception {
runTest("compiler/testData/ir/irText/types/genericFunWithStar.kt");
@@ -65,7 +65,7 @@ class DelegatedPropertyGenerator(declarationGenerator: DeclarationGenerator) : D
val irDelegate = irProperty.backingField!!
val thisClass = propertyDescriptor.containingDeclaration as? ClassDescriptor
val delegateReceiverValue = createBackingFieldValueForDelegate(irDelegate.symbol, thisClass, ktDelegate)
val delegateReceiverValue = createBackingFieldValueForDelegate(irDelegate.symbol, thisClass, ktDelegate, propertyDescriptor)
val getterDescriptor = propertyDescriptor.getter!!
irProperty.getter = generateDelegatedPropertyAccessor(ktProperty, ktDelegate, getterDescriptor) { irGetter ->
generateDelegatedPropertyGetterBody(
@@ -120,24 +120,26 @@ class DelegatedPropertyGenerator(declarationGenerator: DeclarationGenerator) : D
kPropertyType: KotlinType,
ktDelegate: KtPropertyDelegate
): IrField {
val delegateType = getDelegatedPropertyDelegateType(propertyDescriptor, ktDelegate)
val delegateDescriptor = createPropertyDelegateDescriptor(propertyDescriptor, delegateType, kPropertyType)
return context.typeTranslator.withTypeErasure(propertyDescriptor) {
val delegateType = getDelegatedPropertyDelegateType(propertyDescriptor, ktDelegate)
val delegateDescriptor = createPropertyDelegateDescriptor(propertyDescriptor, delegateType, kPropertyType)
val startOffset = ktDelegate.startOffsetSkippingComments
val endOffset = ktDelegate.endOffset
val origin = IrDeclarationOrigin.PROPERTY_DELEGATE
val type = delegateDescriptor.type.toIrType()
return context.symbolTable.declareField(
startOffset, endOffset, origin, delegateDescriptor, type
) {
IrFieldImpl(startOffset, endOffset, origin, it, type).apply {
metadata = MetadataSource.Property(propertyDescriptor)
val startOffset = ktDelegate.startOffsetSkippingComments
val endOffset = ktDelegate.endOffset
val origin = IrDeclarationOrigin.PROPERTY_DELEGATE
val type = delegateDescriptor.type.toIrType()
context.symbolTable.declareField(
startOffset, endOffset, origin, delegateDescriptor, type
) {
IrFieldImpl(startOffset, endOffset, origin, it, type).apply {
metadata = MetadataSource.Property(propertyDescriptor)
}
}.also { irDelegate ->
irDelegate.initializer = generateInitializerBodyForPropertyDelegate(
propertyDescriptor, kPropertyType, ktDelegate,
irDelegate.symbol
)
}
}.also { irDelegate ->
irDelegate.initializer = generateInitializerBodyForPropertyDelegate(
propertyDescriptor, kPropertyType, ktDelegate,
irDelegate.symbol
)
}
}
@@ -166,17 +168,21 @@ class DelegatedPropertyGenerator(declarationGenerator: DeclarationGenerator) : D
private fun createBackingFieldValueForDelegate(
irDelegateField: IrFieldSymbol,
thisClass: ClassDescriptor?,
ktDelegate: KtPropertyDelegate
ktDelegate: KtPropertyDelegate,
propertyDescriptor: PropertyDescriptor
): IntermediateValue {
val thisValue = createThisValueForDelegate(thisClass, ktDelegate)
return BackingFieldLValue(
context,
ktDelegate.startOffsetSkippingComments, ktDelegate.endOffset,
irDelegateField.descriptor.type.toIrType(),
irDelegateField,
thisValue,
null
)
return context.typeTranslator.withTypeErasure(propertyDescriptor) {
// TODO: do not erase type here
val thisValue = createThisValueForDelegate(thisClass, ktDelegate)
BackingFieldLValue(
context,
ktDelegate.startOffsetSkippingComments, ktDelegate.endOffset,
irDelegateField.descriptor.type.toIrType(),
irDelegateField,
thisValue,
null
)
}
}
private fun createThisValueForDelegate(thisClass: ClassDescriptor?, ktDelegate: KtPropertyDelegate): IntermediateValue? =
@@ -203,10 +203,13 @@ internal class InsertImplicitCasts(
initializer = initializer?.cast(declaration.descriptor.type)
}
override fun visitField(declaration: IrField): IrStatement =
declaration.transformPostfix {
initializer?.coerceInnerExpression(descriptor.type)
override fun visitField(declaration: IrField): IrStatement {
return typeTranslator.withTypeErasure(declaration.correspondingPropertySymbol?.descriptor ?: declaration.descriptor) {
declaration.transformPostfix {
initializer?.coerceInnerExpression(descriptor.type)
}
}
}
override fun visitFunction(declaration: IrFunction): IrStatement =
typeTranslator.buildWithScope(declaration) {
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations
@@ -22,6 +23,7 @@ import org.jetbrains.kotlin.ir.types.impl.*
import org.jetbrains.kotlin.types.*
import org.jetbrains.kotlin.types.typeUtil.replaceArgumentsWithStarProjections
import org.jetbrains.kotlin.types.typesApproximation.approximateCapturedTypes
import java.util.*
class TypeTranslator(
private val symbolTable: ReferenceSymbolTable,
@@ -31,6 +33,8 @@ class TypeTranslator(
private val enterTableScope: Boolean = false
) {
private val erasureStack = Stack<PropertyDescriptor>()
private val typeApproximatorForNI = TypeApproximator(builtIns)
lateinit var constantValueGenerator: ConstantValueGenerator
@@ -48,6 +52,15 @@ class TypeTranslator(
}
}
fun <T> withTypeErasure(propertyDescriptor: PropertyDescriptor, b: () -> T): T {
try {
erasureStack.push(propertyDescriptor)
return b()
} finally {
erasureStack.pop()
}
}
inline fun <T> buildWithScope(container: IrTypeParametersContainer, builder: () -> T): T {
enterScope(container)
val result = builder()
@@ -80,6 +93,17 @@ class TypeTranslator(
val ktTypeDescriptor = ktTypeConstructor.declarationDescriptor
?: throw AssertionError("No descriptor for type $approximatedType")
if (erasureStack.isNotEmpty()) {
if (ktTypeDescriptor is TypeParameterDescriptor) {
if (ktTypeDescriptor.containingDeclaration in erasureStack) {
// This hack is about type parameter leak in case of generic delegated property
// Such code has to be prohibited since LV 1.5
// For more details see commit message or KT-24643
return approximateUpperBounds(ktTypeDescriptor.upperBounds, variance)
}
}
}
return IrSimpleTypeBuilder().apply {
this.kotlinType = flexibleApproximatedType
this.hasQuestionMark = approximatedType.isMarkedNullable
@@ -103,6 +127,11 @@ class TypeTranslator(
}.buildTypeProjection()
}
private fun approximateUpperBounds(upperBounds: Collection<KotlinType>, variance: Variance): IrTypeProjection {
val commonSupertype = CommonSupertypes.commonSupertype(upperBounds)
return translateType(approximate(commonSupertype.replaceArgumentsWithStarProjections()), variance)
}
private fun SimpleType.toIrTypeAbbreviation(): IrTypeAbbreviation {
val typeAliasDescriptor = constructor.declarationDescriptor.let {
it as? TypeAliasDescriptor
@@ -0,0 +1,60 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: NATIVE
//For KT-6020
// MODULE: lib
// FILE: lib.kt
import kotlin.reflect.KProperty1
import kotlin.reflect.KMutableProperty1
import kotlin.reflect.KProperty
class Value<T, IT: IR<T>>(var value1: T, val value2: IT)
interface IDelegate1<T1, R1> {
operator fun getValue(t: T1, p: KProperty<*>): R1
}
interface IDelegate2<T2, R2> {
operator fun getValue(t: T2, p: KProperty<*>): R2
}
interface IR<R> {
fun foo(): R
}
class CR<R>(val r: R) : IR<R> {
override fun foo(): R = r
}
class P<P1, P2>(val p1: P1, val p2: P2)
val <T> Value<T, CR<T>>.additionalText by object : IDelegate1<Value<T, CR<T>>, P<T, T>> {
fun <F11T> qux11(t: F11T): F11T = t
private val Value<T, CR<T>>.deepO by object : IDelegate1<Value<T, CR<T>>, T> {
override fun getValue(t: Value<T, CR<T>>, p: KProperty<*>): T {
return qux11(t.value1)
}
}
private val Value<T, CR<T>>.deepK by object : IDelegate1<Value<T, CR<T>>, T> {
fun <F22T: IR<T>> qux22(t: F22T): T = t.foo()
override fun getValue(t: Value<T, CR<T>>, p: KProperty<*>): T {
return qux22(t.value2)
}
}
override fun getValue(t: Value<T, CR<T>>, p: KProperty<*>): P<T, T> {
return P(t.deepO, t.deepK)
}
}
// MODULE: main(lib)
// FILE: main.kt
fun box(): String {
val p = Value("O", CR("K"))
val rr = p.additionalText
return rr.p1 + rr.p2
}
@@ -1,6 +1,5 @@
// IGNORE_BACKEND_FIR: JVM_IR
// IGNORE_BACKEND: NATIVE
// IGNORE_BACKEND: JS_IR
//For KT-6020
// MODULE: lib
@@ -68,7 +68,7 @@ FILE fqName:<root> fileName:/genericPropertyRef.kt
FIELD PROPERTY_DELEGATE name:additionalText$delegate type:<root>.DVal visibility:private [final,static]
EXPRESSION_BODY
CONSTRUCTOR_CALL 'public constructor <init> (kmember: kotlin.Any) [primary] declared in <root>.DVal' type=<root>.DVal origin=null
kmember: PROPERTY_REFERENCE 'public final text: kotlin.String? [var]' field=null getter='public final fun <get-text> (): kotlin.String? declared in <root>.Value' setter='public final fun <set-text> (<set-?>: kotlin.String?): kotlin.Unit declared in <root>.Value' type=kotlin.reflect.KMutableProperty1<<root>.Value<T of <root>.<get-additionalText>>, kotlin.String?> origin=null
kmember: PROPERTY_REFERENCE 'public final text: kotlin.String? [var]' field=null getter='public final fun <get-text> (): kotlin.String? declared in <root>.Value' setter='public final fun <set-text> (<set-?>: kotlin.String?): kotlin.Unit declared in <root>.Value' type=kotlin.reflect.KMutableProperty1<<root>.Value<kotlin.Any?>, kotlin.String?> origin=null
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-additionalText> visibility:public modality:FINAL <T> ($receiver:<root>.Value<T of <root>.<get-additionalText>>) returnType:kotlin.Int
correspondingProperty: PROPERTY name:additionalText visibility:public modality:FINAL [delegated,val]
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
@@ -83,7 +83,7 @@ FILE fqName:<root> fileName:/genericPropertyRef.kt
FIELD PROPERTY_DELEGATE name:additionalValue$delegate type:<root>.DVal visibility:private [final,static]
EXPRESSION_BODY
CONSTRUCTOR_CALL 'public constructor <init> (kmember: kotlin.Any) [primary] declared in <root>.DVal' type=<root>.DVal origin=null
kmember: PROPERTY_REFERENCE 'public final value: T of <root>.Value [var]' field=null getter='public final fun <get-value> (): T of <root>.Value declared in <root>.Value' setter='public final fun <set-value> (<set-?>: T of <root>.Value): kotlin.Unit declared in <root>.Value' type=kotlin.reflect.KMutableProperty1<<root>.Value<T of <root>.<get-additionalValue>>, T of <root>.<get-additionalValue>> origin=null
kmember: PROPERTY_REFERENCE 'public final value: T of <root>.Value [var]' field=null getter='public final fun <get-value> (): T of <root>.Value declared in <root>.Value' setter='public final fun <set-value> (<set-?>: T of <root>.Value): kotlin.Unit declared in <root>.Value' type=kotlin.reflect.KMutableProperty1<<root>.Value<kotlin.Any?>, kotlin.Any?> origin=null
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-additionalValue> visibility:public modality:FINAL <T> ($receiver:<root>.Value<T of <root>.<get-additionalValue>>) returnType:kotlin.Int
correspondingProperty: PROPERTY name:additionalValue visibility:public modality:FINAL [delegated,val]
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
@@ -0,0 +1,322 @@
FILE fqName:<root> fileName:/genericDelegatedDeepProperty.kt
CLASS CLASS name:Value modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Value<T of <root>.Value, IT of <root>.Value>
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
TYPE_PARAMETER name:IT index:1 variance: superTypes:[<root>.IR<T of <root>.Value>]
CONSTRUCTOR visibility:public <> (value1:T of <root>.Value, value2:IT of <root>.Value) returnType:<root>.Value<T of <root>.Value, IT of <root>.Value> [primary]
VALUE_PARAMETER name:value1 index:0 type:T of <root>.Value
VALUE_PARAMETER name:value2 index:1 type:IT of <root>.Value
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Value modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:value1 visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:value1 type:T of <root>.Value visibility:private
EXPRESSION_BODY
GET_VAR 'value1: T of <root>.Value declared in <root>.Value.<init>' type=T of <root>.Value origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-value1> visibility:public modality:FINAL <> ($this:<root>.Value<T of <root>.Value, IT of <root>.Value>) returnType:T of <root>.Value
correspondingProperty: PROPERTY name:value1 visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.Value, IT of <root>.Value>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-value1> (): T of <root>.Value declared in <root>.Value'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value1 type:T of <root>.Value visibility:private' type=T of <root>.Value origin=null
receiver: GET_VAR '<this>: <root>.Value<T of <root>.Value, IT of <root>.Value> declared in <root>.Value.<get-value1>' type=<root>.Value<T of <root>.Value, IT of <root>.Value> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-value1> visibility:public modality:FINAL <> ($this:<root>.Value<T of <root>.Value, IT of <root>.Value>, <set-?>:T of <root>.Value) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:value1 visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.Value, IT of <root>.Value>
VALUE_PARAMETER name:<set-?> index:0 type:T of <root>.Value
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value1 type:T of <root>.Value visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Value<T of <root>.Value, IT of <root>.Value> declared in <root>.Value.<set-value1>' type=<root>.Value<T of <root>.Value, IT of <root>.Value> origin=null
value: GET_VAR '<set-?>: T of <root>.Value declared in <root>.Value.<set-value1>' type=T of <root>.Value origin=null
PROPERTY name:value2 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:value2 type:IT of <root>.Value visibility:private [final]
EXPRESSION_BODY
GET_VAR 'value2: IT of <root>.Value declared in <root>.Value.<init>' type=IT of <root>.Value origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-value2> visibility:public modality:FINAL <> ($this:<root>.Value<T of <root>.Value, IT of <root>.Value>) returnType:IT of <root>.Value
correspondingProperty: PROPERTY name:value2 visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.Value, IT of <root>.Value>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-value2> (): IT of <root>.Value declared in <root>.Value'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value2 type:IT of <root>.Value visibility:private [final]' type=IT of <root>.Value origin=null
receiver: GET_VAR '<this>: <root>.Value<T of <root>.Value, IT of <root>.Value> declared in <root>.Value.<get-value2>' type=<root>.Value<T of <root>.Value, IT of <root>.Value> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:IDelegate1 modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IDelegate1<T1 of <root>.IDelegate1, R1 of <root>.IDelegate1>
TYPE_PARAMETER name:T1 index:0 variance: superTypes:[kotlin.Any?]
TYPE_PARAMETER name:R1 index:1 variance: superTypes:[kotlin.Any?]
FUN name:getValue visibility:public modality:ABSTRACT <> ($this:<root>.IDelegate1<T1 of <root>.IDelegate1, R1 of <root>.IDelegate1>, t:T1 of <root>.IDelegate1, p:kotlin.reflect.KProperty<*>) returnType:R1 of <root>.IDelegate1 [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.IDelegate1<T1 of <root>.IDelegate1, R1 of <root>.IDelegate1>
VALUE_PARAMETER name:t index:0 type:T1 of <root>.IDelegate1
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:IDelegate2 modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IDelegate2<T2 of <root>.IDelegate2, R2 of <root>.IDelegate2>
TYPE_PARAMETER name:T2 index:0 variance: superTypes:[kotlin.Any?]
TYPE_PARAMETER name:R2 index:1 variance: superTypes:[kotlin.Any?]
FUN name:getValue visibility:public modality:ABSTRACT <> ($this:<root>.IDelegate2<T2 of <root>.IDelegate2, R2 of <root>.IDelegate2>, t:T2 of <root>.IDelegate2, p:kotlin.reflect.KProperty<*>) returnType:R2 of <root>.IDelegate2 [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.IDelegate2<T2 of <root>.IDelegate2, R2 of <root>.IDelegate2>
VALUE_PARAMETER name:t index:0 type:T2 of <root>.IDelegate2
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:IR modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IR<R of <root>.IR>
TYPE_PARAMETER name:R index:0 variance: superTypes:[kotlin.Any?]
FUN name:foo visibility:public modality:ABSTRACT <> ($this:<root>.IR<R of <root>.IR>) returnType:R of <root>.IR
$this: VALUE_PARAMETER name:<this> type:<root>.IR<R of <root>.IR>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:CR modality:FINAL visibility:public superTypes:[<root>.IR<R of <root>.CR>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.CR<R of <root>.CR>
TYPE_PARAMETER name:R index:0 variance: superTypes:[kotlin.Any?]
CONSTRUCTOR visibility:public <> (r:R of <root>.CR) returnType:<root>.CR<R of <root>.CR> [primary]
VALUE_PARAMETER name:r index:0 type:R of <root>.CR
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:CR modality:FINAL visibility:public superTypes:[<root>.IR<R of <root>.CR>]'
PROPERTY name:r visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:r type:R of <root>.CR visibility:private [final]
EXPRESSION_BODY
GET_VAR 'r: R of <root>.CR declared in <root>.CR.<init>' type=R of <root>.CR origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-r> visibility:public modality:FINAL <> ($this:<root>.CR<R of <root>.CR>) returnType:R of <root>.CR
correspondingProperty: PROPERTY name:r visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.CR<R of <root>.CR>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-r> (): R of <root>.CR declared in <root>.CR'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:r type:R of <root>.CR visibility:private [final]' type=R of <root>.CR origin=null
receiver: GET_VAR '<this>: <root>.CR<R of <root>.CR> declared in <root>.CR.<get-r>' type=<root>.CR<R of <root>.CR> origin=null
FUN name:foo visibility:public modality:FINAL <> ($this:<root>.CR<R of <root>.CR>) returnType:R of <root>.CR
$this: VALUE_PARAMETER name:<this> type:<root>.CR<R of <root>.CR>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun foo (): R of <root>.CR declared in <root>.CR'
CALL 'public final fun <get-r> (): R of <root>.CR declared in <root>.CR' type=R of <root>.CR origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.CR<R of <root>.CR> declared in <root>.CR.foo' type=<root>.CR<R of <root>.CR> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:P modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.P<P1 of <root>.P, P2 of <root>.P>
TYPE_PARAMETER name:P1 index:0 variance: superTypes:[kotlin.Any?]
TYPE_PARAMETER name:P2 index:1 variance: superTypes:[kotlin.Any?]
CONSTRUCTOR visibility:public <> (p1:P1 of <root>.P, p2:P2 of <root>.P) returnType:<root>.P<P1 of <root>.P, P2 of <root>.P> [primary]
VALUE_PARAMETER name:p1 index:0 type:P1 of <root>.P
VALUE_PARAMETER name:p2 index:1 type:P2 of <root>.P
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:P modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:p1 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:p1 type:P1 of <root>.P visibility:private [final]
EXPRESSION_BODY
GET_VAR 'p1: P1 of <root>.P declared in <root>.P.<init>' type=P1 of <root>.P origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p1> visibility:public modality:FINAL <> ($this:<root>.P<P1 of <root>.P, P2 of <root>.P>) returnType:P1 of <root>.P
correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.P<P1 of <root>.P, P2 of <root>.P>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p1> (): P1 of <root>.P declared in <root>.P'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p1 type:P1 of <root>.P visibility:private [final]' type=P1 of <root>.P origin=null
receiver: GET_VAR '<this>: <root>.P<P1 of <root>.P, P2 of <root>.P> declared in <root>.P.<get-p1>' type=<root>.P<P1 of <root>.P, P2 of <root>.P> origin=null
PROPERTY name:p2 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:p2 type:P2 of <root>.P visibility:private [final]
EXPRESSION_BODY
GET_VAR 'p2: P2 of <root>.P declared in <root>.P.<init>' type=P2 of <root>.P origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p2> visibility:public modality:FINAL <> ($this:<root>.P<P1 of <root>.P, P2 of <root>.P>) returnType:P2 of <root>.P
correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.P<P1 of <root>.P, P2 of <root>.P>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p2> (): P2 of <root>.P declared in <root>.P'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p2 type:P2 of <root>.P visibility:private [final]' type=P2 of <root>.P origin=null
receiver: GET_VAR '<this>: <root>.P<P1 of <root>.P, P2 of <root>.P> declared in <root>.P.<get-p2>' type=<root>.P<P1 of <root>.P, P2 of <root>.P> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
PROPERTY name:additionalText visibility:public modality:FINAL [delegated,val]
FIELD PROPERTY_DELEGATE name:additionalText$delegate type:<root>.additionalText$delegate.<no name provided> visibility:private [final,static]
EXPRESSION_BODY
BLOCK type=<root>.additionalText$delegate.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>>>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.additionalText$delegate.<no name provided>
CONSTRUCTOR visibility:private <> () returnType:<root>.additionalText$delegate.<no name provided> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>>>]'
FUN name:qux11 visibility:public modality:FINAL <F11T> ($this:<root>.additionalText$delegate.<no name provided>, t:F11T of <root>.additionalText$delegate.<no name provided>.qux11) returnType:F11T of <root>.additionalText$delegate.<no name provided>.qux11
TYPE_PARAMETER name:F11T index:0 variance: superTypes:[kotlin.Any?]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>
VALUE_PARAMETER name:t index:0 type:F11T of <root>.additionalText$delegate.<no name provided>.qux11
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun qux11 <F11T> (t: F11T of <root>.additionalText$delegate.<no name provided>.qux11): F11T of <root>.additionalText$delegate.<no name provided>.qux11 declared in <root>.additionalText$delegate.<no name provided>'
GET_VAR 't: F11T of <root>.additionalText$delegate.<no name provided>.qux11 declared in <root>.additionalText$delegate.<no name provided>.qux11' type=F11T of <root>.additionalText$delegate.<no name provided>.qux11 origin=null
FUN name:qux12 visibility:public modality:FINAL <F12T> ($this:<root>.additionalText$delegate.<no name provided>, t:F12T of <root>.additionalText$delegate.<no name provided>.qux12) returnType:T of <root>.<get-additionalText>
TYPE_PARAMETER name:F12T index:0 variance: superTypes:[<root>.IR<T of <root>.<get-additionalText>>]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>
VALUE_PARAMETER name:t index:0 type:F12T of <root>.additionalText$delegate.<no name provided>.qux12
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun qux12 <F12T> (t: F12T of <root>.additionalText$delegate.<no name provided>.qux12): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>'
CALL 'public abstract fun foo (): R of <root>.IR declared in <root>.IR' type=T of <root>.<get-additionalText> origin=null
$this: GET_VAR 't: F12T of <root>.additionalText$delegate.<no name provided>.qux12 declared in <root>.additionalText$delegate.<no name provided>.qux12' type=F12T of <root>.additionalText$delegate.<no name provided>.qux12 origin=null
PROPERTY name:deepO visibility:private modality:FINAL [delegated,val]
FIELD PROPERTY_DELEGATE name:deepO$delegate type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided> visibility:private [final]
EXPRESSION_BODY
BLOCK type=<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, T of <root>.<get-additionalText>>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>
CONSTRUCTOR visibility:private <> () returnType:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, T of <root>.<get-additionalText>>]'
FUN name:getValue visibility:public modality:FINAL <> ($this:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>, t:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, p:kotlin.reflect.KProperty<*>) returnType:T of <root>.<get-additionalText>
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>
VALUE_PARAMETER name:t index:0 type:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun getValue (t: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, p: kotlin.reflect.KProperty<*>): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>'
CALL 'public final fun <get-value1> (): T of <root>.Value declared in <root>.Value' type=T of <root>.<get-additionalText> origin=GET_PROPERTY
$this: GET_VAR 't: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.getValue' type=<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> origin=null
FUN name:qux21 visibility:public modality:FINAL <F21T> ($this:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>, t:F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21) returnType:F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21
TYPE_PARAMETER name:F21T index:0 variance: superTypes:[kotlin.Any?]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>
VALUE_PARAMETER name:t index:0 type:F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun qux21 <F21T> (t: F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21): F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21 declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>'
GET_VAR 't: F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21 declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21' type=F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21 origin=null
FUN name:qux22 visibility:public modality:FINAL <F22T> ($this:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>, t:F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22) returnType:T of <root>.<get-additionalText>
TYPE_PARAMETER name:F22T index:0 variance: superTypes:[<root>.IR<T of <root>.<get-additionalText>>]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>
VALUE_PARAMETER name:t index:0 type:F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun qux22 <F22T> (t: F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>'
CALL 'public abstract fun foo (): R of <root>.IR declared in <root>.IR' type=T of <root>.<get-additionalText> origin=null
$this: GET_VAR 't: F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22 declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22' type=F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22 origin=null
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>' type=<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided> origin=OBJECT_LITERAL
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-deepO> visibility:public modality:FINAL <> ($this:<root>.additionalText$delegate.<no name provided>, $receiver:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>) returnType:T of <root>.<get-additionalText>
correspondingProperty: PROPERTY name:deepO visibility:private modality:FINAL [delegated,val]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>
$receiver: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-deepO> (): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>'
CALL 'public final fun getValue (t: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, p: kotlin.reflect.KProperty<*>): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>' type=T of <root>.<get-additionalText> origin=null
$this: GET_FIELD 'FIELD PROPERTY_DELEGATE name:deepO$delegate type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided> visibility:private [final]' type=<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided> origin=GET_PROPERTY
t: ERROR_CALL 'Unresolved reference: this@R|/anonymous.deepO|' type=<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
p: PROPERTY_REFERENCE 'private final deepO: T of <root>.<get-additionalText> [delegated,val]' field='FIELD PROPERTY_DELEGATE name:deepO$delegate type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided> visibility:private [final]' getter='public final fun <get-deepO> (): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>' setter=null type=kotlin.reflect.KProperty<*> origin=null
PROPERTY name:deepK visibility:private modality:FINAL [delegated,val]
FIELD PROPERTY_DELEGATE name:deepK$delegate type:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided> visibility:private [final]
EXPRESSION_BODY
BLOCK type=<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, T of <root>.<get-additionalText>>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>
CONSTRUCTOR visibility:private <> () returnType:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, T of <root>.<get-additionalText>>]'
FUN name:getValue visibility:public modality:FINAL <> ($this:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>, t:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, p:kotlin.reflect.KProperty<*>) returnType:T of <root>.<get-additionalText>
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>
VALUE_PARAMETER name:t index:0 type:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun getValue (t: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, p: kotlin.reflect.KProperty<*>): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>'
CALL 'public final fun foo (): R of <root>.CR declared in <root>.CR' type=T of <root>.<get-additionalText> origin=null
$this: CALL 'public final fun <get-value2> (): IT of <root>.Value declared in <root>.Value' type=<root>.CR<T of <root>.<get-additionalText>> origin=GET_PROPERTY
$this: GET_VAR 't: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> declared in <root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>.getValue' type=<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> origin=null
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>' type=<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided> origin=OBJECT_LITERAL
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-deepK> visibility:public modality:FINAL <> ($this:<root>.additionalText$delegate.<no name provided>, $receiver:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>) returnType:T of <root>.<get-additionalText>
correspondingProperty: PROPERTY name:deepK visibility:private modality:FINAL [delegated,val]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>
$receiver: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-deepK> (): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>'
CALL 'public final fun getValue (t: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, p: kotlin.reflect.KProperty<*>): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>' type=T of <root>.<get-additionalText> origin=null
$this: GET_FIELD 'FIELD PROPERTY_DELEGATE name:deepK$delegate type:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided> visibility:private [final]' type=<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided> origin=GET_PROPERTY
t: ERROR_CALL 'Unresolved reference: this@R|/anonymous.deepK|' type=<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
p: PROPERTY_REFERENCE 'private final deepK: T of <root>.<get-additionalText> [delegated,val]' field='FIELD PROPERTY_DELEGATE name:deepK$delegate type:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided> visibility:private [final]' getter='public final fun <get-deepK> (): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>' setter=null type=kotlin.reflect.KProperty<*> origin=null
FUN name:getValue visibility:public modality:FINAL <> ($this:<root>.additionalText$delegate.<no name provided>, t:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, p:kotlin.reflect.KProperty<*>) returnType:<root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>>
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>
VALUE_PARAMETER name:t index:0 type:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun getValue (t: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, p: kotlin.reflect.KProperty<*>): <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> declared in <root>.additionalText$delegate.<no name provided>'
CONSTRUCTOR_CALL 'public constructor <init> (p1: P1 of <root>.P, p2: P2 of <root>.P) [primary] declared in <root>.P' type=<root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> origin=null
<class: P1>: T of <root>.<get-additionalText>
<class: P2>: T of <root>.<get-additionalText>
p1: CALL 'public final fun <get-deepO> (): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>' type=T of <root>.<get-additionalText> origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.additionalText$delegate.<no name provided> declared in <root>.additionalText$delegate.<no name provided>' type=<root>.additionalText$delegate.<no name provided> origin=null
$receiver: GET_VAR 't: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> declared in <root>.additionalText$delegate.<no name provided>.getValue' type=<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> origin=null
p2: CALL 'public final fun <get-deepK> (): T of <root>.<get-additionalText> declared in <root>.additionalText$delegate.<no name provided>' type=T of <root>.<get-additionalText> origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.additionalText$delegate.<no name provided> declared in <root>.additionalText$delegate.<no name provided>' type=<root>.additionalText$delegate.<no name provided> origin=null
$receiver: GET_VAR 't: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> declared in <root>.additionalText$delegate.<no name provided>.getValue' type=<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> origin=null
CONSTRUCTOR_CALL 'private constructor <init> () [primary] declared in <root>.additionalText$delegate.<no name provided>' type=<root>.additionalText$delegate.<no name provided> origin=OBJECT_LITERAL
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-additionalText> visibility:public modality:FINAL <T> ($receiver:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>) returnType:<root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>>
correspondingProperty: PROPERTY name:additionalText visibility:public modality:FINAL [delegated,val]
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
$receiver: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-additionalText> <T> (): <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> declared in <root>'
CALL 'public final fun getValue (t: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, p: kotlin.reflect.KProperty<*>): <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> declared in <root>.additionalText$delegate.<no name provided>' type=<root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> origin=null
$this: GET_FIELD 'FIELD PROPERTY_DELEGATE name:additionalText$delegate type:<root>.additionalText$delegate.<no name provided> visibility:private [final,static]' type=<root>.additionalText$delegate.<no name provided> origin=GET_PROPERTY
t: ERROR_CALL 'Unresolved reference: this@R|/additionalText|' type=<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
p: PROPERTY_REFERENCE 'public final additionalText: <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> [delegated,val]' field='FIELD PROPERTY_DELEGATE name:additionalText$delegate type:<root>.additionalText$delegate.<no name provided> visibility:private [final,static]' getter='public final fun <get-additionalText> <T> (): <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> declared in <root>' setter=null type=kotlin.reflect.KProperty<*> origin=null
@@ -0,0 +1,48 @@
import kotlin.reflect.KProperty1
import kotlin.reflect.KMutableProperty1
import kotlin.reflect.KProperty
class Value<T, IT: IR<T>>(var value1: T, val value2: IT)
interface IDelegate1<T1, R1> {
operator fun getValue(t: T1, p: KProperty<*>): R1
}
interface IDelegate2<T2, R2> {
operator fun getValue(t: T2, p: KProperty<*>): R2
}
interface IR<R> {
fun foo(): R
}
class CR<R>(val r: R) : IR<R> {
override fun foo(): R = r
}
class P<P1, P2>(val p1: P1, val p2: P2)
val <T> Value<T, CR<T>>.additionalText by object : IDelegate1<Value<T, CR<T>>, P<T, T>> {
fun <F11T> qux11(t: F11T): F11T = t
fun <F12T: IR<T>> qux12(t: F12T): T = t.foo()
private val Value<T, CR<T>>.deepO by object : IDelegate1<Value<T, CR<T>>, T> {
override fun getValue(t: Value<T, CR<T>>, p: KProperty<*>): T {
return t.value1
}
fun <F21T> qux21(t: F21T): F21T = t
fun <F22T: IR<T>> qux22(t: F22T): T = t.foo()
}
private val Value<T, CR<T>>.deepK by object : IDelegate1<Value<T, CR<T>>, T> {
override fun getValue(t: Value<T, CR<T>>, p: KProperty<*>): T {
return t.value2.foo()
}
}
override fun getValue(t: Value<T, CR<T>>, p: KProperty<*>): P<T, T> {
return P(t.deepO, t.deepK)
}
}
@@ -0,0 +1,379 @@
FILE fqName:<root> fileName:/genericDelegatedDeepProperty.kt
CLASS CLASS name:Value modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Value<T of <root>.Value, IT of <root>.Value>
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
TYPE_PARAMETER name:IT index:1 variance: superTypes:[<root>.IR<T of <root>.Value>]
CONSTRUCTOR visibility:public <> (value1:T of <root>.Value, value2:IT of <root>.Value) returnType:<root>.Value<T of <root>.Value, IT of <root>.Value> [primary]
VALUE_PARAMETER name:value1 index:0 type:T of <root>.Value
VALUE_PARAMETER name:value2 index:1 type:IT of <root>.Value
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Value modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:value1 visibility:public modality:FINAL [var]
FIELD PROPERTY_BACKING_FIELD name:value1 type:T of <root>.Value visibility:private
EXPRESSION_BODY
GET_VAR 'value1: T of <root>.Value declared in <root>.Value.<init>' type=T of <root>.Value origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-value1> visibility:public modality:FINAL <> ($this:<root>.Value<T of <root>.Value, IT of <root>.Value>) returnType:T of <root>.Value
correspondingProperty: PROPERTY name:value1 visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.Value, IT of <root>.Value>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-value1> (): T of <root>.Value declared in <root>.Value'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value1 type:T of <root>.Value visibility:private' type=T of <root>.Value origin=null
receiver: GET_VAR '<this>: <root>.Value<T of <root>.Value, IT of <root>.Value> declared in <root>.Value.<get-value1>' type=<root>.Value<T of <root>.Value, IT of <root>.Value> origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-value1> visibility:public modality:FINAL <> ($this:<root>.Value<T of <root>.Value, IT of <root>.Value>, <set-?>:T of <root>.Value) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:value1 visibility:public modality:FINAL [var]
$this: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.Value, IT of <root>.Value>
VALUE_PARAMETER name:<set-?> index:0 type:T of <root>.Value
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value1 type:T of <root>.Value visibility:private' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Value<T of <root>.Value, IT of <root>.Value> declared in <root>.Value.<set-value1>' type=<root>.Value<T of <root>.Value, IT of <root>.Value> origin=null
value: GET_VAR '<set-?>: T of <root>.Value declared in <root>.Value.<set-value1>' type=T of <root>.Value origin=null
PROPERTY name:value2 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:value2 type:IT of <root>.Value visibility:private [final]
EXPRESSION_BODY
GET_VAR 'value2: IT of <root>.Value declared in <root>.Value.<init>' type=IT of <root>.Value origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-value2> visibility:public modality:FINAL <> ($this:<root>.Value<T of <root>.Value, IT of <root>.Value>) returnType:IT of <root>.Value
correspondingProperty: PROPERTY name:value2 visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.Value, IT of <root>.Value>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-value2> (): IT of <root>.Value declared in <root>.Value'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value2 type:IT of <root>.Value visibility:private [final]' type=IT of <root>.Value origin=null
receiver: GET_VAR '<this>: <root>.Value<T of <root>.Value, IT of <root>.Value> declared in <root>.Value.<get-value2>' type=<root>.Value<T of <root>.Value, IT of <root>.Value> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:IDelegate1 modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IDelegate1<T1 of <root>.IDelegate1, R1 of <root>.IDelegate1>
TYPE_PARAMETER name:T1 index:0 variance: superTypes:[kotlin.Any?]
TYPE_PARAMETER name:R1 index:1 variance: superTypes:[kotlin.Any?]
FUN name:getValue visibility:public modality:ABSTRACT <> ($this:<root>.IDelegate1<T1 of <root>.IDelegate1, R1 of <root>.IDelegate1>, t:T1 of <root>.IDelegate1, p:kotlin.reflect.KProperty<*>) returnType:R1 of <root>.IDelegate1 [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.IDelegate1<T1 of <root>.IDelegate1, R1 of <root>.IDelegate1>
VALUE_PARAMETER name:t index:0 type:T1 of <root>.IDelegate1
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:IDelegate2 modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IDelegate2<T2 of <root>.IDelegate2, R2 of <root>.IDelegate2>
TYPE_PARAMETER name:T2 index:0 variance: superTypes:[kotlin.Any?]
TYPE_PARAMETER name:R2 index:1 variance: superTypes:[kotlin.Any?]
FUN name:getValue visibility:public modality:ABSTRACT <> ($this:<root>.IDelegate2<T2 of <root>.IDelegate2, R2 of <root>.IDelegate2>, t:T2 of <root>.IDelegate2, p:kotlin.reflect.KProperty<*>) returnType:R2 of <root>.IDelegate2 [operator]
$this: VALUE_PARAMETER name:<this> type:<root>.IDelegate2<T2 of <root>.IDelegate2, R2 of <root>.IDelegate2>
VALUE_PARAMETER name:t index:0 type:T2 of <root>.IDelegate2
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS INTERFACE name:IR modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IR<R of <root>.IR>
TYPE_PARAMETER name:R index:0 variance: superTypes:[kotlin.Any?]
FUN name:foo visibility:public modality:ABSTRACT <> ($this:<root>.IR<R of <root>.IR>) returnType:R of <root>.IR
$this: VALUE_PARAMETER name:<this> type:<root>.IR<R of <root>.IR>
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:CR modality:FINAL visibility:public superTypes:[<root>.IR<R of <root>.CR>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.CR<R of <root>.CR>
TYPE_PARAMETER name:R index:0 variance: superTypes:[kotlin.Any?]
CONSTRUCTOR visibility:public <> (r:R of <root>.CR) returnType:<root>.CR<R of <root>.CR> [primary]
VALUE_PARAMETER name:r index:0 type:R of <root>.CR
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:CR modality:FINAL visibility:public superTypes:[<root>.IR<R of <root>.CR>]'
PROPERTY name:r visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:r type:R of <root>.CR visibility:private [final]
EXPRESSION_BODY
GET_VAR 'r: R of <root>.CR declared in <root>.CR.<init>' type=R of <root>.CR origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-r> visibility:public modality:FINAL <> ($this:<root>.CR<R of <root>.CR>) returnType:R of <root>.CR
correspondingProperty: PROPERTY name:r visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.CR<R of <root>.CR>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-r> (): R of <root>.CR declared in <root>.CR'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:r type:R of <root>.CR visibility:private [final]' type=R of <root>.CR origin=null
receiver: GET_VAR '<this>: <root>.CR<R of <root>.CR> declared in <root>.CR.<get-r>' type=<root>.CR<R of <root>.CR> origin=null
FUN name:foo visibility:public modality:OPEN <> ($this:<root>.CR<R of <root>.CR>) returnType:R of <root>.CR
overridden:
public abstract fun foo (): R of <root>.IR declared in <root>.IR
$this: VALUE_PARAMETER name:<this> type:<root>.CR<R of <root>.CR>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun foo (): R of <root>.CR declared in <root>.CR'
CALL 'public final fun <get-r> (): R of <root>.CR declared in <root>.CR' type=R of <root>.CR origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.CR<R of <root>.CR> declared in <root>.CR.foo' type=<root>.CR<R of <root>.CR> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.IR
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.IR
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.IR
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:P modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.P<P1 of <root>.P, P2 of <root>.P>
TYPE_PARAMETER name:P1 index:0 variance: superTypes:[kotlin.Any?]
TYPE_PARAMETER name:P2 index:1 variance: superTypes:[kotlin.Any?]
CONSTRUCTOR visibility:public <> (p1:P1 of <root>.P, p2:P2 of <root>.P) returnType:<root>.P<P1 of <root>.P, P2 of <root>.P> [primary]
VALUE_PARAMETER name:p1 index:0 type:P1 of <root>.P
VALUE_PARAMETER name:p2 index:1 type:P2 of <root>.P
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:P modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:p1 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:p1 type:P1 of <root>.P visibility:private [final]
EXPRESSION_BODY
GET_VAR 'p1: P1 of <root>.P declared in <root>.P.<init>' type=P1 of <root>.P origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p1> visibility:public modality:FINAL <> ($this:<root>.P<P1 of <root>.P, P2 of <root>.P>) returnType:P1 of <root>.P
correspondingProperty: PROPERTY name:p1 visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.P<P1 of <root>.P, P2 of <root>.P>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p1> (): P1 of <root>.P declared in <root>.P'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p1 type:P1 of <root>.P visibility:private [final]' type=P1 of <root>.P origin=null
receiver: GET_VAR '<this>: <root>.P<P1 of <root>.P, P2 of <root>.P> declared in <root>.P.<get-p1>' type=<root>.P<P1 of <root>.P, P2 of <root>.P> origin=null
PROPERTY name:p2 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:p2 type:P2 of <root>.P visibility:private [final]
EXPRESSION_BODY
GET_VAR 'p2: P2 of <root>.P declared in <root>.P.<init>' type=P2 of <root>.P origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-p2> visibility:public modality:FINAL <> ($this:<root>.P<P1 of <root>.P, P2 of <root>.P>) returnType:P2 of <root>.P
correspondingProperty: PROPERTY name:p2 visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.P<P1 of <root>.P, P2 of <root>.P>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-p2> (): P2 of <root>.P declared in <root>.P'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:p2 type:P2 of <root>.P visibility:private [final]' type=P2 of <root>.P origin=null
receiver: GET_VAR '<this>: <root>.P<P1 of <root>.P, P2 of <root>.P> declared in <root>.P.<get-p2>' type=<root>.P<P1 of <root>.P, P2 of <root>.P> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
PROPERTY name:additionalText visibility:public modality:FINAL [delegated,val]
FIELD PROPERTY_DELEGATE name:additionalText$delegate type:<root>.additionalText$delegate.<no name provided><kotlin.Any?> visibility:private [final,static]
EXPRESSION_BODY
BLOCK type=<root>.additionalText$delegate.<no name provided><kotlin.Any?> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, <root>.P<kotlin.Any?, kotlin.Any?>>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.additionalText$delegate.<no name provided><kotlin.Any?>
CONSTRUCTOR visibility:public <> () returnType:<root>.additionalText$delegate.<no name provided><kotlin.Any?> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, <root>.P<kotlin.Any?, kotlin.Any?>>]'
FUN name:qux11 visibility:public modality:FINAL <F11T> ($this:<root>.additionalText$delegate.<no name provided><kotlin.Any?>, t:F11T of <root>.additionalText$delegate.<no name provided>.qux11) returnType:F11T of <root>.additionalText$delegate.<no name provided>.qux11
TYPE_PARAMETER name:F11T index:0 variance: superTypes:[kotlin.Any?]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided><kotlin.Any?>
VALUE_PARAMETER name:t index:0 type:F11T of <root>.additionalText$delegate.<no name provided>.qux11
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun qux11 <F11T> (t: F11T of <root>.additionalText$delegate.<no name provided>.qux11): F11T of <root>.additionalText$delegate.<no name provided>.qux11 declared in <root>.additionalText$delegate.<no name provided>'
GET_VAR 't: F11T of <root>.additionalText$delegate.<no name provided>.qux11 declared in <root>.additionalText$delegate.<no name provided>.qux11' type=F11T of <root>.additionalText$delegate.<no name provided>.qux11 origin=null
FUN name:qux12 visibility:public modality:FINAL <F12T> ($this:<root>.additionalText$delegate.<no name provided><kotlin.Any?>, t:F12T of <root>.additionalText$delegate.<no name provided>.qux12) returnType:kotlin.Any?
TYPE_PARAMETER name:F12T index:0 variance: superTypes:[<root>.IR<kotlin.Any?>]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided><kotlin.Any?>
VALUE_PARAMETER name:t index:0 type:F12T of <root>.additionalText$delegate.<no name provided>.qux12
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun qux12 <F12T> (t: F12T of <root>.additionalText$delegate.<no name provided>.qux12): kotlin.Any? declared in <root>.additionalText$delegate.<no name provided>'
TYPE_OP type=kotlin.Any? origin=IMPLICIT_CAST typeOperand=kotlin.Any?
CALL 'public abstract fun foo (): R of <root>.IR declared in <root>.IR' type=kotlin.Any? origin=null
$this: GET_VAR 't: F12T of <root>.additionalText$delegate.<no name provided>.qux12 declared in <root>.additionalText$delegate.<no name provided>.qux12' type=F12T of <root>.additionalText$delegate.<no name provided>.qux12 origin=null
PROPERTY name:deepO visibility:private modality:FINAL [delegated,val]
FIELD PROPERTY_DELEGATE name:deepO$delegate type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?> visibility:private [final]
EXPRESSION_BODY
BLOCK type=<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, kotlin.Any?>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?>
CONSTRUCTOR visibility:public <> () returnType:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, kotlin.Any?>]'
FUN name:getValue visibility:public modality:OPEN <> ($this:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?>, t:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, p:kotlin.reflect.KProperty<*>) returnType:kotlin.Any? [operator]
overridden:
public abstract fun getValue (t: T1 of <root>.IDelegate1, p: kotlin.reflect.KProperty<*>): R1 of <root>.IDelegate1 [operator] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?>
VALUE_PARAMETER name:t index:0 type:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun getValue (t: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, p: kotlin.reflect.KProperty<*>): kotlin.Any? [operator] declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>'
TYPE_OP type=kotlin.Any? origin=IMPLICIT_CAST typeOperand=kotlin.Any?
CALL 'public final fun <get-value1> (): T of <root>.Value declared in <root>.Value' type=kotlin.Any? origin=GET_PROPERTY
$this: GET_VAR 't: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.getValue' type=<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> origin=null
FUN name:qux21 visibility:public modality:FINAL <F21T> ($this:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?>, t:F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21) returnType:F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21
TYPE_PARAMETER name:F21T index:0 variance: superTypes:[kotlin.Any?]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?>
VALUE_PARAMETER name:t index:0 type:F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun qux21 <F21T> (t: F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21): F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21 declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>'
GET_VAR 't: F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21 declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21' type=F21T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux21 origin=null
FUN name:qux22 visibility:public modality:FINAL <F22T> ($this:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?>, t:F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22) returnType:kotlin.Any?
TYPE_PARAMETER name:F22T index:0 variance: superTypes:[<root>.IR<kotlin.Any?>]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?>
VALUE_PARAMETER name:t index:0 type:F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun qux22 <F22T> (t: F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22): kotlin.Any? declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>'
TYPE_OP type=kotlin.Any? origin=IMPLICIT_CAST typeOperand=kotlin.Any?
CALL 'public abstract fun foo (): R of <root>.IR declared in <root>.IR' type=kotlin.Any? origin=null
$this: GET_VAR 't: F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22 declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22' type=F22T of <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>.qux22 origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>' type=<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?> origin=OBJECT_LITERAL
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-deepO> visibility:private modality:FINAL <> ($this:<root>.additionalText$delegate.<no name provided><kotlin.Any?>, $receiver:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>) returnType:kotlin.Any?
correspondingProperty: PROPERTY name:deepO visibility:private modality:FINAL [delegated,val]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided><kotlin.Any?>
$receiver: VALUE_PARAMETER name:<this> type:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-deepO> (): kotlin.Any? declared in <root>.additionalText$delegate.<no name provided>'
TYPE_OP type=kotlin.Any? origin=IMPLICIT_CAST typeOperand=kotlin.Any?
CALL 'public open fun getValue (t: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, p: kotlin.reflect.KProperty<*>): kotlin.Any? [operator] declared in <root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided>' type=kotlin.Any? origin=null
$this: GET_FIELD 'FIELD PROPERTY_DELEGATE name:deepO$delegate type:<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?> visibility:private [final]' type=<root>.additionalText$delegate.<no name provided>.deepO$delegate.<no name provided><kotlin.Any?> origin=null
receiver: GET_VAR '<this>: <root>.additionalText$delegate.<no name provided><kotlin.Any?> declared in <root>.additionalText$delegate.<no name provided>.<get-deepO>' type=<root>.additionalText$delegate.<no name provided><kotlin.Any?> origin=null
t: GET_VAR '<this>: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> declared in <root>.additionalText$delegate.<no name provided>.<get-deepO>' type=<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> origin=null
p: PROPERTY_REFERENCE 'private final deepO: kotlin.Any? [delegated,val]' field=null getter='private final fun <get-deepO> (): kotlin.Any? declared in <root>.additionalText$delegate.<no name provided>' setter=null type=kotlin.reflect.KProperty2<<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, <root>.additionalText$delegate.<no name provided><kotlin.Any?>, kotlin.Any?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
PROPERTY name:deepK visibility:private modality:FINAL [delegated,val]
FIELD PROPERTY_DELEGATE name:deepK$delegate type:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided><kotlin.Any?> visibility:private [final]
EXPRESSION_BODY
BLOCK type=<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided><kotlin.Any?> origin=OBJECT_LITERAL
CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, kotlin.Any?>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided><kotlin.Any?>
CONSTRUCTOR visibility:public <> () returnType:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided><kotlin.Any?> [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate1<<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, kotlin.Any?>]'
FUN name:getValue visibility:public modality:OPEN <> ($this:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided><kotlin.Any?>, t:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, p:kotlin.reflect.KProperty<*>) returnType:kotlin.Any? [operator]
overridden:
public abstract fun getValue (t: T1 of <root>.IDelegate1, p: kotlin.reflect.KProperty<*>): R1 of <root>.IDelegate1 [operator] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided><kotlin.Any?>
VALUE_PARAMETER name:t index:0 type:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun getValue (t: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, p: kotlin.reflect.KProperty<*>): kotlin.Any? [operator] declared in <root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>'
TYPE_OP type=kotlin.Any? origin=IMPLICIT_CAST typeOperand=kotlin.Any?
CALL 'public open fun foo (): R of <root>.CR declared in <root>.CR' type=kotlin.Any? origin=null
$this: CALL 'public final fun <get-value2> (): IT of <root>.Value declared in <root>.Value' type=<root>.CR<kotlin.Any?> origin=GET_PROPERTY
$this: GET_VAR 't: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> declared in <root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>.getValue' type=<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>' type=<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided><kotlin.Any?> origin=OBJECT_LITERAL
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-deepK> visibility:private modality:FINAL <> ($this:<root>.additionalText$delegate.<no name provided><kotlin.Any?>, $receiver:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>) returnType:kotlin.Any?
correspondingProperty: PROPERTY name:deepK visibility:private modality:FINAL [delegated,val]
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided><kotlin.Any?>
$receiver: VALUE_PARAMETER name:<this> type:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-deepK> (): kotlin.Any? declared in <root>.additionalText$delegate.<no name provided>'
TYPE_OP type=kotlin.Any? origin=IMPLICIT_CAST typeOperand=kotlin.Any?
CALL 'public open fun getValue (t: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, p: kotlin.reflect.KProperty<*>): kotlin.Any? [operator] declared in <root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided>' type=kotlin.Any? origin=null
$this: GET_FIELD 'FIELD PROPERTY_DELEGATE name:deepK$delegate type:<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided><kotlin.Any?> visibility:private [final]' type=<root>.additionalText$delegate.<no name provided>.deepK$delegate.<no name provided><kotlin.Any?> origin=null
receiver: GET_VAR '<this>: <root>.additionalText$delegate.<no name provided><kotlin.Any?> declared in <root>.additionalText$delegate.<no name provided>.<get-deepK>' type=<root>.additionalText$delegate.<no name provided><kotlin.Any?> origin=null
t: GET_VAR '<this>: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> declared in <root>.additionalText$delegate.<no name provided>.<get-deepK>' type=<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> origin=null
p: PROPERTY_REFERENCE 'private final deepK: kotlin.Any? [delegated,val]' field=null getter='private final fun <get-deepK> (): kotlin.Any? declared in <root>.additionalText$delegate.<no name provided>' setter=null type=kotlin.reflect.KProperty2<<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, <root>.additionalText$delegate.<no name provided><kotlin.Any?>, kotlin.Any?> origin=PROPERTY_REFERENCE_FOR_DELEGATE
FUN name:getValue visibility:public modality:OPEN <> ($this:<root>.additionalText$delegate.<no name provided><kotlin.Any?>, t:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, p:kotlin.reflect.KProperty<*>) returnType:<root>.P<kotlin.Any?, kotlin.Any?> [operator]
overridden:
public abstract fun getValue (t: T1 of <root>.IDelegate1, p: kotlin.reflect.KProperty<*>): R1 of <root>.IDelegate1 [operator] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:<root>.additionalText$delegate.<no name provided><kotlin.Any?>
VALUE_PARAMETER name:t index:0 type:<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>
VALUE_PARAMETER name:p index:1 type:kotlin.reflect.KProperty<*>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun getValue (t: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, p: kotlin.reflect.KProperty<*>): <root>.P<kotlin.Any?, kotlin.Any?> [operator] declared in <root>.additionalText$delegate.<no name provided>'
CONSTRUCTOR_CALL 'public constructor <init> (p1: P1 of <root>.P, p2: P2 of <root>.P) [primary] declared in <root>.P' type=<root>.P<kotlin.Any?, kotlin.Any?> origin=null
<class: P1>: kotlin.Any?
<class: P2>: kotlin.Any?
p1: TYPE_OP type=kotlin.Any? origin=IMPLICIT_CAST typeOperand=kotlin.Any?
CALL 'private final fun <get-deepO> (): kotlin.Any? declared in <root>.additionalText$delegate.<no name provided>' type=kotlin.Any? origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.additionalText$delegate.<no name provided><kotlin.Any?> declared in <root>.additionalText$delegate.<no name provided>.getValue' type=<root>.additionalText$delegate.<no name provided><kotlin.Any?> origin=null
$receiver: GET_VAR 't: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> declared in <root>.additionalText$delegate.<no name provided>.getValue' type=<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> origin=null
p2: TYPE_OP type=kotlin.Any? origin=IMPLICIT_CAST typeOperand=kotlin.Any?
CALL 'private final fun <get-deepK> (): kotlin.Any? declared in <root>.additionalText$delegate.<no name provided>' type=kotlin.Any? origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.additionalText$delegate.<no name provided><kotlin.Any?> declared in <root>.additionalText$delegate.<no name provided>.getValue' type=<root>.additionalText$delegate.<no name provided><kotlin.Any?> origin=null
$receiver: GET_VAR 't: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> declared in <root>.additionalText$delegate.<no name provided>.getValue' type=<root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.IDelegate1
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.additionalText$delegate.<no name provided>' type=<root>.additionalText$delegate.<no name provided><kotlin.Any?> origin=OBJECT_LITERAL
FUN DELEGATED_PROPERTY_ACCESSOR name:<get-additionalText> visibility:public modality:FINAL <T> ($receiver:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>) returnType:<root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>>
correspondingProperty: PROPERTY name:additionalText visibility:public modality:FINAL [delegated,val]
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
$receiver: VALUE_PARAMETER name:<this> type:<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-additionalText> <T> (): <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> declared in <root>'
CALL 'public open fun getValue (t: <root>.Value<kotlin.Any?, <root>.CR<kotlin.Any?>>, p: kotlin.reflect.KProperty<*>): <root>.P<kotlin.Any?, kotlin.Any?> [operator] declared in <root>.additionalText$delegate.<no name provided>' type=<root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> origin=null
$this: GET_FIELD 'FIELD PROPERTY_DELEGATE name:additionalText$delegate type:<root>.additionalText$delegate.<no name provided><kotlin.Any?> visibility:private [final,static]' type=<root>.additionalText$delegate.<no name provided><kotlin.Any?> origin=null
t: GET_VAR '<this>: <root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> declared in <root>.<get-additionalText>' type=<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>> origin=null
p: PROPERTY_REFERENCE 'public final additionalText: <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> [delegated,val]' field=null getter='public final fun <get-additionalText> <T> (): <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>> declared in <root>' setter=null type=kotlin.reflect.KProperty1<<root>.Value<T of <root>.<get-additionalText>, <root>.CR<T of <root>.<get-additionalText>>>, <root>.P<T of <root>.<get-additionalText>, T of <root>.<get-additionalText>>> origin=PROPERTY_REFERENCE_FOR_DELEGATE
@@ -14893,6 +14893,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/ir/serializationRegressions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@TestMetadata("deepGenericDelegatedProperty.kt")
public void testDeepGenericDelegatedProperty() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/deepGenericDelegatedProperty.kt");
}
@TestMetadata("dispatchReceiverValue.kt")
public void testDispatchReceiverValue() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/dispatchReceiverValue.kt");
@@ -14898,6 +14898,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/ir/serializationRegressions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@TestMetadata("deepGenericDelegatedProperty.kt")
public void testDeepGenericDelegatedProperty() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/deepGenericDelegatedProperty.kt");
}
@TestMetadata("dispatchReceiverValue.kt")
public void testDispatchReceiverValue() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/dispatchReceiverValue.kt");
@@ -13748,6 +13748,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/ir/serializationRegressions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@TestMetadata("deepGenericDelegatedProperty.kt")
public void testDeepGenericDelegatedProperty() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/deepGenericDelegatedProperty.kt");
}
@TestMetadata("dispatchReceiverValue.kt")
public void testDispatchReceiverValue() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/dispatchReceiverValue.kt");
@@ -1876,6 +1876,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase {
runTest("compiler/testData/ir/irText/types/genericFunWithStar.kt");
}
@TestMetadata("genericDelegatedDeepProperty.kt")
public void testGenericDelegatedDeepProperty() throws Exception {
runTest("compiler/testData/ir/irText/types/genericDelegatedDeepProperty.kt");
}
@TestMetadata("genericPropertyReferenceType.kt")
public void testGenericPropertyReferenceType() throws Exception {
runTest("compiler/testData/ir/irText/types/genericPropertyReferenceType.kt");
@@ -11908,6 +11908,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/ir/serializationRegressions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
}
@TestMetadata("deepGenericDelegatedProperty.kt")
public void testDeepGenericDelegatedProperty() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/deepGenericDelegatedProperty.kt");
}
@TestMetadata("dispatchReceiverValue.kt")
public void testDispatchReceiverValue() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/dispatchReceiverValue.kt");
@@ -11973,6 +11973,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/ir/serializationRegressions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true);
}
@TestMetadata("deepGenericDelegatedProperty.kt")
public void testDeepGenericDelegatedProperty() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/deepGenericDelegatedProperty.kt");
}
@TestMetadata("dispatchReceiverValue.kt")
public void testDispatchReceiverValue() throws Exception {
runTest("compiler/testData/codegen/box/ir/serializationRegressions/dispatchReceiverValue.kt");