From d3de2d419b57ef1b53bf17df1a21815cb33a5112 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 15 Jan 2020 14:14:43 +0300 Subject: [PATCH] FIR2IR: fix failing enum entry test --- .../fir/backend/Fir2IrDeclarationStorage.kt | 3 +- .../classes/enumWithMultipleCtors.fir.txt | 272 +++--------------- 2 files changed, 35 insertions(+), 240 deletions(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index a0f9ea9d3d3..66349b64f71 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -83,7 +83,8 @@ class Fir2IrDeclarationStorage( irSymbolTable.enterScope(descriptor) if (descriptor is WrappedSimpleFunctionDescriptor || descriptor is WrappedClassConstructorDescriptor || - descriptor is WrappedPropertyDescriptor + descriptor is WrappedPropertyDescriptor || + descriptor is WrappedEnumEntryDescriptor ) { localStorage.enterCallable() } diff --git a/compiler/testData/ir/irText/classes/enumWithMultipleCtors.fir.txt b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.fir.txt index 1eacccbb75e..0a5985b0a96 100644 --- a/compiler/testData/ir/irText/classes/enumWithMultipleCtors.fir.txt +++ b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.fir.txt @@ -1,243 +1,37 @@ FILE fqName: fileName:/enumWithMultipleCtors.kt CLASS ENUM_CLASS name:A modality:FINAL visibility:public superTypes:[kotlin.Enum<.A>] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A - CLASS ENUM_ENTRY name:X modality:FINAL visibility:public superTypes:[.A] - $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.X - CONSTRUCTOR visibility:public <> () returnType:.A.X [primary] - BLOCK_BODY - DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' - arg: CONST String type=kotlin.String value="asd" - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:X modality:FINAL visibility:public superTypes:[.A]' - PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A.X - PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A.X - PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] - overridden: - public final fun (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A.X - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X, :kotlin.String) returnType:kotlin.Unit [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] - overridden: - public final fun (: kotlin.String): kotlin.Unit declared in .A - $this: VALUE_PARAMETER name: type:.A.X - VALUE_PARAMETER name: index:0 type:kotlin.String - FUN FAKE_OVERRIDE name:f visibility:public modality:OPEN <> ($this:.A) returnType:kotlin.String [fake_override] - overridden: - public open fun f (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A - FUN FAKE_OVERRIDE name:values visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.Array<.A> [fake_override] - overridden: - public final fun values (): kotlin.Array<.A> declared in .A - $this: VALUE_PARAMETER name: type:.A - FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:.A, value:kotlin.String) returnType:.A [fake_override] - overridden: - public final fun valueOf (value: kotlin.String): .A declared in .A - $this: VALUE_PARAMETER name: type:.A - VALUE_PARAMETER name:value index:0 type:kotlin.String - FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override] - overridden: - protected final fun clone (): kotlin.Any declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - FUN FAKE_OVERRIDE name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Enum, other:.A) returnType:kotlin.Int [fake_override,operator] - overridden: - public final fun compareTo (other: E of kotlin.Enum): kotlin.Int [operator] declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - VALUE_PARAMETER name:other index:0 type:.A - FUN FAKE_OVERRIDE name:equals visibility:public modality:FINAL <> ($this:kotlin.Enum, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] - overridden: - public final fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - VALUE_PARAMETER name:other index:0 type:kotlin.Any? - FUN FAKE_OVERRIDE name:hashCode visibility:public modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Int [fake_override] - overridden: - public final fun hashCode (): kotlin.Int declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Enum) returnType:kotlin.String [fake_override] - overridden: - public open fun toString (): kotlin.String declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.String declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:.A.X - PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.X) returnType:kotlin.Int [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.Int declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:.A.X - CLASS ENUM_ENTRY name:Y modality:FINAL visibility:public superTypes:[.A] - $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.Y - CONSTRUCTOR visibility:public <> () returnType:.A.Y [primary] - BLOCK_BODY - DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:Y modality:FINAL visibility:public superTypes:[.A]' - FUN name:f visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String - $this: VALUE_PARAMETER name: type:.A.Y - BLOCK_BODY - RETURN type=kotlin.Nothing from='public final fun f (): kotlin.String declared in .A.Y' - CALL 'public final fun plus (other: kotlin.Any?): kotlin.String [operator] declared in kotlin.String' type=kotlin.String origin=null - $this: CALL 'public open fun f (): kotlin.String declared in .A' type=kotlin.String origin=null - $this: ERROR_CALL 'Unresolved reference: super' type=.A - other: CONST String type=kotlin.String value="#Y" - PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.String declared in .A + ENUM_ENTRY name:X + class: CLASS ENUM_ENTRY name:X modality:FINAL visibility:local superTypes:[.A] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.X + CONSTRUCTOR visibility:private <> () returnType:. [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' + arg: CONST String type=kotlin.String value="asd" + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:X modality:FINAL visibility:local superTypes:[.A]' + ENUM_ENTRY name:Y + class: CLASS ENUM_ENTRY name:Y modality:FINAL visibility:local superTypes:[.A] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.Y + CONSTRUCTOR visibility:private <> () returnType:. [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:Y modality:FINAL visibility:local superTypes:[.A]' + FUN name:f visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String $this: VALUE_PARAMETER name: type:.A.Y - PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A.Y - PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] - overridden: - public final fun (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A.Y - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y, :kotlin.String) returnType:kotlin.Unit [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] - overridden: - public final fun (: kotlin.String): kotlin.Unit declared in .A - $this: VALUE_PARAMETER name: type:.A.Y - VALUE_PARAMETER name: index:0 type:kotlin.String - FUN FAKE_OVERRIDE name:values visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.Array<.A> [fake_override] - overridden: - public final fun values (): kotlin.Array<.A> declared in .A - $this: VALUE_PARAMETER name: type:.A - FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:.A, value:kotlin.String) returnType:.A [fake_override] - overridden: - public final fun valueOf (value: kotlin.String): .A declared in .A - $this: VALUE_PARAMETER name: type:.A - VALUE_PARAMETER name:value index:0 type:kotlin.String - FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override] - overridden: - protected final fun clone (): kotlin.Any declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - FUN FAKE_OVERRIDE name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Enum, other:.A) returnType:kotlin.Int [fake_override,operator] - overridden: - public final fun compareTo (other: E of kotlin.Enum): kotlin.Int [operator] declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - VALUE_PARAMETER name:other index:0 type:.A - FUN FAKE_OVERRIDE name:equals visibility:public modality:FINAL <> ($this:kotlin.Enum, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] - overridden: - public final fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - VALUE_PARAMETER name:other index:0 type:kotlin.Any? - FUN FAKE_OVERRIDE name:hashCode visibility:public modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Int [fake_override] - overridden: - public final fun hashCode (): kotlin.Int declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Enum) returnType:kotlin.String [fake_override] - overridden: - public open fun toString (): kotlin.String declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.String declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:.A.Y - PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Y) returnType:kotlin.Int [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.Int declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:.A.Y - CLASS ENUM_ENTRY name:Z modality:FINAL visibility:public superTypes:[.A] - $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.Z - CONSTRUCTOR visibility:public <> () returnType:.A.Z [primary] - BLOCK_BODY - DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' - arg: CONST Int type=kotlin.Int value=5 - INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:Z modality:FINAL visibility:public superTypes:[.A]' - PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop1 visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A.Z - PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop2 visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A.Z - PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] - overridden: - public final fun (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A.Z - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z, :kotlin.String) returnType:kotlin.Unit [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop3 visibility:public modality:FINAL [fake_override,var] - overridden: - public final fun (: kotlin.String): kotlin.Unit declared in .A - $this: VALUE_PARAMETER name: type:.A.Z - VALUE_PARAMETER name: index:0 type:kotlin.String - FUN FAKE_OVERRIDE name:f visibility:public modality:OPEN <> ($this:.A) returnType:kotlin.String [fake_override] - overridden: - public open fun f (): kotlin.String declared in .A - $this: VALUE_PARAMETER name: type:.A - FUN FAKE_OVERRIDE name:values visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.Array<.A> [fake_override] - overridden: - public final fun values (): kotlin.Array<.A> declared in .A - $this: VALUE_PARAMETER name: type:.A - FUN FAKE_OVERRIDE name:valueOf visibility:public modality:FINAL <> ($this:.A, value:kotlin.String) returnType:.A [fake_override] - overridden: - public final fun valueOf (value: kotlin.String): .A declared in .A - $this: VALUE_PARAMETER name: type:.A - VALUE_PARAMETER name:value index:0 type:kotlin.String - FUN FAKE_OVERRIDE name:clone visibility:protected modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Any [fake_override] - overridden: - protected final fun clone (): kotlin.Any declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - FUN FAKE_OVERRIDE name:compareTo visibility:public modality:FINAL <> ($this:kotlin.Enum, other:.A) returnType:kotlin.Int [fake_override,operator] - overridden: - public final fun compareTo (other: E of kotlin.Enum): kotlin.Int [operator] declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - VALUE_PARAMETER name:other index:0 type:.A - FUN FAKE_OVERRIDE name:equals visibility:public modality:FINAL <> ($this:kotlin.Enum, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] - overridden: - public final fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - VALUE_PARAMETER name:other index:0 type:kotlin.Any? - FUN FAKE_OVERRIDE name:hashCode visibility:public modality:FINAL <> ($this:kotlin.Enum) returnType:kotlin.Int [fake_override] - overridden: - public final fun hashCode (): kotlin.Int declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Enum) returnType:kotlin.String [fake_override] - overridden: - public open fun toString (): kotlin.String declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:kotlin.Enum - PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.String [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:name visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.String declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:.A.Z - PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] - FUN FAKE_OVERRIDE name: visibility:public modality:FINAL <> ($this:.A.Z) returnType:kotlin.Int [fake_override] - correspondingProperty: PROPERTY FAKE_OVERRIDE name:ordinal visibility:public modality:FINAL [fake_override,val] - overridden: - public final fun (): kotlin.Int declared in kotlin.Enum - $this: VALUE_PARAMETER name: type:.A.Z + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun f (): kotlin.String declared in .A.Y' + CALL 'public final fun plus (other: kotlin.Any?): kotlin.String [operator] declared in kotlin.String' type=kotlin.String origin=null + $this: CALL 'public open fun f (): kotlin.String declared in .A' type=kotlin.String origin=null + $this: ERROR_CALL 'Unresolved reference: super' type=.A + other: CONST String type=kotlin.String value="#Y" + ENUM_ENTRY name:Z + class: CLASS ENUM_ENTRY name:Z modality:FINAL visibility:local superTypes:[.A] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.A.Z + CONSTRUCTOR visibility:private <> () returnType:. [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'private constructor (arg: kotlin.String) declared in .A' + arg: CONST Int type=kotlin.Int value=5 + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS ENUM_ENTRY name:Z modality:FINAL visibility:local superTypes:[.A]' PROPERTY name:prop1 visibility:public modality:FINAL [val] FIELD PROPERTY_BACKING_FIELD name:prop1 type:kotlin.String visibility:private [final] FUN DEFAULT_PROPERTY_ACCESSOR name: visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.String @@ -311,15 +105,15 @@ FILE fqName: fileName:/enumWithMultipleCtors.kt STRING_CONCATENATION type=kotlin.String CALL 'public open fun toString (): kotlin.String declared in kotlin.Any' type=kotlin.String origin=null $this: CALL 'public final fun (): kotlin.String declared in .A' type=kotlin.String origin=null - $this: GET_VAR ': .A declared in .A' type=.A origin=null + $this: GET_VAR ': .A declared in .A.f' type=.A origin=null CONST String type=kotlin.String value="#" CALL 'public open fun toString (): kotlin.String declared in kotlin.Any' type=kotlin.String origin=null $this: CALL 'public final fun (): kotlin.String declared in .A' type=kotlin.String origin=null - $this: GET_VAR ': .A declared in .A' type=.A origin=null + $this: GET_VAR ': .A declared in .A.f' type=.A origin=null CONST String type=kotlin.String value="#" CALL 'public open fun toString (): kotlin.String declared in kotlin.Any' type=kotlin.String origin=null $this: CALL 'public final fun (): kotlin.String declared in .A' type=kotlin.String origin=null - $this: GET_VAR ': .A declared in .A' type=.A origin=null + $this: GET_VAR ': .A declared in .A.f' type=.A origin=null FUN name:values visibility:public modality:FINAL <> ($this:.A) returnType:kotlin.Array<.A> $this: VALUE_PARAMETER name: type:.A BLOCK_BODY