FIR: introduce delegate field initializers

Before this commit we initialized delegate fields in primary constructor,
that could provoke NPE in case delegate is used in initializer of
some property backing field.
Now we initialize delegate fields directly instead.
This commit is contained in:
Mikhail Glukhikh
2021-02-02 17:51:11 +03:00
parent 2cbdad0bb1
commit d4b0688690
69 changed files with 928 additions and 356 deletions
@@ -56,10 +56,6 @@ class AnnotationLoader {
super/*Any*/()
/* <init>() */
<this>.#<$$delegate_0> = visitor
}
override fun visit() {
}
override fun visitArray(): Visitor? {
@@ -70,7 +66,9 @@ class AnnotationLoader {
return <this>.#<$$delegate_0>.visitAnnotation()
}
local /* final field */ val <$$delegate_0>: Visitor
local /* final field */ val <$$delegate_0>: Visitor = visitor
override fun visit() {
}
}
@@ -108,14 +108,6 @@ FILE fqName:<root> fileName:/AnnotationLoader.kt
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>.Visitor]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null
value: GET_VAR 'val visitor: <root>.Visitor [val] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation' type=<root>.Visitor origin=null
FUN name:visit visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
BLOCK_BODY
FUN DELEGATED_MEMBER name:visitArray visibility:public modality:OPEN <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:<root>.Visitor?
overridden:
public open fun visitArray (): <root>.Visitor? declared in <root>.Visitor
@@ -135,6 +127,13 @@ FILE fqName:<root> fileName:/AnnotationLoader.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]' type=<root>.Visitor origin=null
receiver: GET_VAR '<this>: <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>.visitAnnotation' type=<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided> origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Visitor visibility:local [final]
EXPRESSION_BODY
GET_VAR 'val visitor: <root>.Visitor [val] declared in <root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation' type=<root>.Visitor origin=null
FUN name:visit visibility:public modality:FINAL <> ($this:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>) returnType:kotlin.Unit
overridden:
public abstract fun visit (): kotlin.Unit declared in <root>.Visitor
$this: VALUE_PARAMETER name:<this> type:<root>.AnnotationLoader.loadAnnotation.<no name provided>.visitAnnotation.<no name provided>
BLOCK_BODY
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
@@ -3,7 +3,6 @@ class Impl : A, B {
super/*Any*/()
/* <init>() */
<this>.#<$$delegate_0> = b
}
override fun add(element: String?): Boolean {
@@ -51,7 +50,7 @@ class Impl : A, B {
return <this>.#<$$delegate_0>.<get-size>()
}
local /* final field */ val <$$delegate_0>: B
local /* final field */ val <$$delegate_0>: B = b
}
@@ -6,9 +6,6 @@ FILE fqName:<root> fileName:/DelegationAndInheritanceFromJava.kt
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Impl modality:FINAL visibility:public superTypes:[<root>.Foo.A; <root>.Foo.B]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Foo.B visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Impl declared in <root>.Impl' type=<root>.Impl origin=null
value: GET_VAR 'b: <root>.Foo.B declared in <root>.Impl.<init>' type=<root>.Foo.B origin=null
FUN DELEGATED_MEMBER name:add visibility:public modality:OPEN <> ($this:<root>.Impl, element:kotlin.String?) returnType:kotlin.Boolean
overridden:
public abstract fun add (element: E of kotlin.collections.MutableSet): kotlin.Boolean declared in kotlin.collections.MutableSet
@@ -124,6 +121,8 @@ FILE fqName:<root> fileName:/DelegationAndInheritanceFromJava.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Foo.B visibility:local [final]' type=<root>.Foo.B origin=null
receiver: GET_VAR '<this>: <root>.Impl declared in <root>.Impl.<get-size>' type=<root>.Impl origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Foo.B visibility:local [final]
EXPRESSION_BODY
GET_VAR 'b: <root>.Foo.B declared in <root>.Impl.<init>' type=<root>.Foo.B 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
@@ -0,0 +1,66 @@
class FirSession {
constructor(name: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val name: String
field = name
get
}
interface Fir2IrComponents {
abstract val session: FirSession
abstract get
abstract val classifierStorage: Fir2IrClassifierStorage
abstract get
}
class Fir2IrComponentsStorage : Fir2IrComponents {
constructor(session: FirSession) /* primary */ {
super/*Any*/()
/* <init>() */
}
override val session: FirSession
field = session
override get
override lateinit var classifierStorage: Fir2IrClassifierStorage
override get
set
}
class Fir2IrClassifierStorage : Fir2IrComponents {
constructor(components: Fir2IrComponents) /* primary */ {
super/*Any*/()
/* <init>() */
}
override val session: FirSession
override get(): FirSession {
return <this>.#<$$delegate_0>.<get-session>()
}
override val classifierStorage: Fir2IrClassifierStorage
override get(): Fir2IrClassifierStorage {
return <this>.#<$$delegate_0>.<get-classifierStorage>()
}
local /* final field */ val <$$delegate_0>: Fir2IrComponents = components
private val components: Fir2IrComponents
field = components
private get
private val name: String
field = <this>.<get-session>().<get-name>()
private get
}
@@ -0,0 +1,176 @@
FILE fqName:<root> fileName:/Fir2IrClassifierStorage.kt
CLASS CLASS name:FirSession modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirSession
CONSTRUCTOR visibility:public <> (name:kotlin.String) returnType:<root>.FirSession [primary]
VALUE_PARAMETER name:name index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirSession modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:name visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 'name: kotlin.String declared in <root>.FirSession.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-name> visibility:public modality:FINAL <> ($this:<root>.FirSession) returnType:kotlin.String
correspondingProperty: PROPERTY name:name visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.FirSession
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-name> (): kotlin.String declared in <root>.FirSession'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.FirSession declared in <root>.FirSession.<get-name>' type=<root>.FirSession 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:Fir2IrComponents modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrComponents
PROPERTY name:session visibility:public modality:ABSTRACT [val]
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-session> visibility:public modality:ABSTRACT <> ($this:<root>.Fir2IrComponents) returnType:<root>.FirSession
correspondingProperty: PROPERTY name:session visibility:public modality:ABSTRACT [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponents
PROPERTY name:classifierStorage visibility:public modality:ABSTRACT [val]
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-classifierStorage> visibility:public modality:ABSTRACT <> ($this:<root>.Fir2IrComponents) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:ABSTRACT [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponents
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:Fir2IrComponentsStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrComponentsStorage
CONSTRUCTOR visibility:public <> (session:<root>.FirSession) returnType:<root>.Fir2IrComponentsStorage [primary]
VALUE_PARAMETER name:session index:0 type:<root>.FirSession
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Fir2IrComponentsStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]'
PROPERTY name:session visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:session type:<root>.FirSession visibility:private [final]
EXPRESSION_BODY
GET_VAR 'session: <root>.FirSession declared in <root>.Fir2IrComponentsStorage.<init>' type=<root>.FirSession origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-session> visibility:public modality:FINAL <> ($this:<root>.Fir2IrComponentsStorage) returnType:<root>.FirSession
correspondingProperty: PROPERTY name:session visibility:public modality:FINAL [val]
overridden:
public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponentsStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:session type:<root>.FirSession visibility:private [final]' type=<root>.FirSession origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<get-session>' type=<root>.Fir2IrComponentsStorage origin=null
PROPERTY name:classifierStorage visibility:public modality:FINAL [lateinit,var]
FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-classifierStorage> visibility:public modality:FINAL <> ($this:<root>.Fir2IrComponentsStorage) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:FINAL [lateinit,var]
overridden:
public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponentsStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public' type=<root>.Fir2IrClassifierStorage origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<get-classifierStorage>' type=<root>.Fir2IrComponentsStorage origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-classifierStorage> visibility:public modality:FINAL <> ($this:<root>.Fir2IrComponentsStorage, <set-?>:<root>.Fir2IrClassifierStorage) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:FINAL [lateinit,var]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
VALUE_PARAMETER name:<set-?> index:0 type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<set-classifierStorage>' type=<root>.Fir2IrComponentsStorage origin=null
value: GET_VAR '<set-?>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponentsStorage.<set-classifierStorage>' type=<root>.Fir2IrClassifierStorage 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:Fir2IrClassifierStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrClassifierStorage
CONSTRUCTOR visibility:public <> (components:<root>.Fir2IrComponents) returnType:<root>.Fir2IrClassifierStorage [primary]
VALUE_PARAMETER name:components index:0 type:<root>.Fir2IrComponents
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Fir2IrClassifierStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]'
PROPERTY DELEGATED_MEMBER name:session visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-session> visibility:public modality:OPEN <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.FirSession
correspondingProperty: PROPERTY DELEGATED_MEMBER name:session visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrClassifierStorage'
CALL 'public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents' type=<root>.FirSession origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Fir2IrComponents visibility:local [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-session>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY DELEGATED_MEMBER name:classifierStorage visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-classifierStorage> visibility:public modality:OPEN <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY DELEGATED_MEMBER name:classifierStorage visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage'
CALL 'public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents' type=<root>.Fir2IrClassifierStorage origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Fir2IrComponents visibility:local [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-classifierStorage>' type=<root>.Fir2IrClassifierStorage origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Fir2IrComponents visibility:local [final]
EXPRESSION_BODY
GET_VAR 'components: <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage.<init>' type=<root>.Fir2IrComponents origin=null
PROPERTY name:components visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]
EXPRESSION_BODY
GET_VAR 'components: <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage.<init>' type=<root>.Fir2IrComponents origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-components> visibility:private modality:FINAL <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.Fir2IrComponents
correspondingProperty: PROPERTY name:components visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-components> (): <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-components>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY name:name visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun <get-name> (): kotlin.String declared in <root>.FirSession' type=kotlin.String origin=GET_PROPERTY
$this: CALL 'public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrClassifierStorage' type=<root>.FirSession origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage' type=<root>.Fir2IrClassifierStorage origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-name> visibility:private modality:FINAL <> ($this:<root>.Fir2IrClassifierStorage) returnType:kotlin.String
correspondingProperty: PROPERTY name:name visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-name> (): kotlin.String declared in <root>.Fir2IrClassifierStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-name>' type=<root>.Fir2IrClassifierStorage 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
@@ -0,0 +1,18 @@
class FirSession(val name: String)
interface Fir2IrComponents {
val session: FirSession
val classifierStorage: Fir2IrClassifierStorage
}
class Fir2IrComponentsStorage(
override val session: FirSession
) : Fir2IrComponents {
override lateinit var classifierStorage: Fir2IrClassifierStorage
}
class Fir2IrClassifierStorage(
private val components: Fir2IrComponents
) : Fir2IrComponents by components {
private val name = session.name
}
@@ -0,0 +1,65 @@
class FirSession {
constructor(name: String) /* primary */ {
super/*Any*/()
/* <init>() */
}
val name: String
field = name
get
}
interface Fir2IrComponents {
abstract val session: FirSession
abstract get
abstract val classifierStorage: Fir2IrClassifierStorage
abstract get
}
class Fir2IrComponentsStorage : Fir2IrComponents {
constructor(session: FirSession) /* primary */ {
super/*Any*/()
/* <init>() */
}
override val session: FirSession
field = session
override get
override lateinit var classifierStorage: Fir2IrClassifierStorage
override get
open set
}
class Fir2IrClassifierStorage : Fir2IrComponents {
constructor(components: Fir2IrComponents) /* primary */ {
super/*Any*/()
/* <init>() */
}
private val components: Fir2IrComponents
field = components
private get
override val classifierStorage: Fir2IrClassifierStorage
override get(): Fir2IrClassifierStorage {
return <this>.#components.<get-classifierStorage>()
}
override val session: FirSession
override get(): FirSession {
return <this>.#components.<get-session>()
}
private val name: String
field = <this>.<get-session>().<get-name>()
private get
}
@@ -0,0 +1,173 @@
FILE fqName:<root> fileName:/Fir2IrClassifierStorage.kt
CLASS CLASS name:FirSession modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.FirSession
CONSTRUCTOR visibility:public <> (name:kotlin.String) returnType:<root>.FirSession [primary]
VALUE_PARAMETER name:name index:0 type:kotlin.String
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:FirSession modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:name visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_VAR 'name: kotlin.String declared in <root>.FirSession.<init>' type=kotlin.String origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-name> visibility:public modality:FINAL <> ($this:<root>.FirSession) returnType:kotlin.String
correspondingProperty: PROPERTY name:name visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.FirSession
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-name> (): kotlin.String declared in <root>.FirSession'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.FirSession declared in <root>.FirSession.<get-name>' type=<root>.FirSession 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:Fir2IrComponents modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrComponents
PROPERTY name:session visibility:public modality:ABSTRACT [val]
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-session> visibility:public modality:ABSTRACT <> ($this:<root>.Fir2IrComponents) returnType:<root>.FirSession
correspondingProperty: PROPERTY name:session visibility:public modality:ABSTRACT [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponents
PROPERTY name:classifierStorage visibility:public modality:ABSTRACT [val]
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-classifierStorage> visibility:public modality:ABSTRACT <> ($this:<root>.Fir2IrComponents) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:ABSTRACT [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponents
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:Fir2IrComponentsStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrComponentsStorage
CONSTRUCTOR visibility:public <> (session:<root>.FirSession) returnType:<root>.Fir2IrComponentsStorage [primary]
VALUE_PARAMETER name:session index:0 type:<root>.FirSession
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Fir2IrComponentsStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]'
PROPERTY name:session visibility:public modality:OPEN [val]
FIELD PROPERTY_BACKING_FIELD name:session type:<root>.FirSession visibility:private [final]
EXPRESSION_BODY
GET_VAR 'session: <root>.FirSession declared in <root>.Fir2IrComponentsStorage.<init>' type=<root>.FirSession origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-session> visibility:public modality:OPEN <> ($this:<root>.Fir2IrComponentsStorage) returnType:<root>.FirSession
correspondingProperty: PROPERTY name:session visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponentsStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:session type:<root>.FirSession visibility:private [final]' type=<root>.FirSession origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<get-session>' type=<root>.Fir2IrComponentsStorage origin=null
PROPERTY name:classifierStorage visibility:public modality:OPEN [lateinit,var]
FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-classifierStorage> visibility:public modality:OPEN <> ($this:<root>.Fir2IrComponentsStorage) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:OPEN [lateinit,var]
overridden:
public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponentsStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public' type=<root>.Fir2IrClassifierStorage origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<get-classifierStorage>' type=<root>.Fir2IrComponentsStorage origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-classifierStorage> visibility:public modality:OPEN <> ($this:<root>.Fir2IrComponentsStorage, <set-?>:<root>.Fir2IrClassifierStorage) returnType:kotlin.Unit
correspondingProperty: PROPERTY name:classifierStorage visibility:public modality:OPEN [lateinit,var]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrComponentsStorage
VALUE_PARAMETER name:<set-?> index:0 type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:classifierStorage type:<root>.Fir2IrClassifierStorage visibility:public' type=kotlin.Unit origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrComponentsStorage declared in <root>.Fir2IrComponentsStorage.<set-classifierStorage>' type=<root>.Fir2IrComponentsStorage origin=null
value: GET_VAR '<set-?>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponentsStorage.<set-classifierStorage>' type=<root>.Fir2IrClassifierStorage 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>.Fir2IrComponents
$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>.Fir2IrComponents
$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>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Fir2IrClassifierStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Fir2IrClassifierStorage
CONSTRUCTOR visibility:public <> (components:<root>.Fir2IrComponents) returnType:<root>.Fir2IrClassifierStorage [primary]
VALUE_PARAMETER name:components index:0 type:<root>.Fir2IrComponents
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Fir2IrClassifierStorage modality:FINAL visibility:public superTypes:[<root>.Fir2IrComponents]'
PROPERTY name:components visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]
EXPRESSION_BODY
GET_VAR 'components: <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage.<init>' type=<root>.Fir2IrComponents origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-components> visibility:private modality:FINAL <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.Fir2IrComponents
correspondingProperty: PROPERTY name:components visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-components> (): <root>.Fir2IrComponents declared in <root>.Fir2IrClassifierStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-components>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY DELEGATED_MEMBER name:classifierStorage visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-classifierStorage> visibility:public modality:OPEN <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.Fir2IrClassifierStorage
correspondingProperty: PROPERTY DELEGATED_MEMBER name:classifierStorage visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage'
CALL 'public abstract fun <get-classifierStorage> (): <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrComponents' type=<root>.Fir2IrClassifierStorage origin=null
$this: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-classifierStorage>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY DELEGATED_MEMBER name:session visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-session> visibility:public modality:OPEN <> ($this:<root>.Fir2IrClassifierStorage) returnType:<root>.FirSession
correspondingProperty: PROPERTY DELEGATED_MEMBER name:session visibility:public modality:OPEN [val]
overridden:
public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrClassifierStorage'
CALL 'public abstract fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrComponents' type=<root>.FirSession origin=null
$this: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:components type:<root>.Fir2IrComponents visibility:private [final]' type=<root>.Fir2IrComponents origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-session>' type=<root>.Fir2IrClassifierStorage origin=null
PROPERTY name:name visibility:private modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]
EXPRESSION_BODY
CALL 'public final fun <get-name> (): kotlin.String declared in <root>.FirSession' type=kotlin.String origin=GET_PROPERTY
$this: CALL 'public open fun <get-session> (): <root>.FirSession declared in <root>.Fir2IrClassifierStorage' type=<root>.FirSession origin=GET_PROPERTY
$this: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage' type=<root>.Fir2IrClassifierStorage origin=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-name> visibility:private modality:FINAL <> ($this:<root>.Fir2IrClassifierStorage) returnType:kotlin.String
correspondingProperty: PROPERTY name:name visibility:private modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Fir2IrClassifierStorage
BLOCK_BODY
RETURN type=kotlin.Nothing from='private final fun <get-name> (): kotlin.String declared in <root>.Fir2IrClassifierStorage'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.Fir2IrClassifierStorage declared in <root>.Fir2IrClassifierStorage.<get-name>' type=<root>.Fir2IrClassifierStorage 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>.Fir2IrComponents
$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>.Fir2IrComponents
$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>.Fir2IrComponents
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -34,9 +34,13 @@ data class DataClass : Derived, Delegate {
super/*Any*/()
/* <init>() */
<this>.#<$$delegate_0> = delegate
}
override fun bar() {
<this>.#<$$delegate_0>.bar()
}
local /* final field */ val <$$delegate_0>: Delegate = delegate
val delegate: Delegate
field = delegate
get
@@ -49,11 +53,6 @@ data class DataClass : Derived, Delegate {
return DataClass(delegate = delegate)
}
override fun bar() {
<this>.#<$$delegate_0>.bar()
}
local /* final field */ val <$$delegate_0>: Delegate
override fun equals(other: Any?): Boolean {
when {
EQEQEQ(arg0 = <this>, arg1 = other) -> return true
@@ -90,9 +90,17 @@ FILE fqName:<root> fileName:/SignatureClash.kt
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DataClass modality:FINAL visibility:public [data] superTypes:[<root>.Derived; <root>.Delegate]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.DataClass declared in <root>.DataClass' type=<root>.DataClass origin=null
value: GET_VAR 'delegate: <root>.Delegate declared in <root>.DataClass.<init>' type=<root>.Delegate origin=null
FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:<root>.DataClass) returnType:kotlin.Unit
overridden:
public abstract fun bar (): kotlin.Unit declared in <root>.Delegate
$this: VALUE_PARAMETER name:<this> type:<root>.DataClass
BLOCK_BODY
CALL 'public abstract fun bar (): kotlin.Unit declared in <root>.Delegate' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]' type=<root>.Delegate origin=null
receiver: GET_VAR '<this>: <root>.DataClass declared in <root>.DataClass.bar' type=<root>.DataClass origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]
EXPRESSION_BODY
GET_VAR 'delegate: <root>.Delegate declared in <root>.DataClass.<init>' type=<root>.Delegate origin=null
PROPERTY name:delegate visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:delegate type:<root>.Delegate visibility:private [final]
EXPRESSION_BODY
@@ -120,15 +128,6 @@ FILE fqName:<root> fileName:/SignatureClash.kt
RETURN type=kotlin.Nothing from='public final fun copy (delegate: <root>.Delegate): <root>.DataClass declared in <root>.DataClass'
CONSTRUCTOR_CALL 'public constructor <init> (delegate: <root>.Delegate) [primary] declared in <root>.DataClass' type=<root>.DataClass origin=null
delegate: GET_VAR 'delegate: <root>.Delegate declared in <root>.DataClass.copy' type=<root>.Delegate origin=null
FUN DELEGATED_MEMBER name:bar visibility:public modality:OPEN <> ($this:<root>.DataClass) returnType:kotlin.Unit
overridden:
public abstract fun bar (): kotlin.Unit declared in <root>.Delegate
$this: VALUE_PARAMETER name:<this> type:<root>.DataClass
BLOCK_BODY
CALL 'public abstract fun bar (): kotlin.Unit declared in <root>.Delegate' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]' type=<root>.Delegate origin=null
receiver: GET_VAR '<this>: <root>.DataClass declared in <root>.DataClass.bar' type=<root>.DataClass origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.Delegate visibility:local [final]
FUN GENERATED_DATA_CLASS_MEMBER name:equals visibility:public modality:OPEN <> ($this:<root>.DataClass, other:kotlin.Any?) returnType:kotlin.Boolean
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
+4 -6
View File
@@ -3,13 +3,8 @@ open class ControlFlowInfo<K : Any?, V : Any?> : Map<K, V> {
super/*Any*/()
/* <init>() */
<this>.#<$$delegate_0> = map
}
val map: Map<K, V>
field = map
get
override fun containsKey(key: K): Boolean {
return <this>.#<$$delegate_0>.containsKey(key = key)
}
@@ -52,7 +47,10 @@ open class ControlFlowInfo<K : Any?, V : Any?> : Map<K, V> {
return <this>.#<$$delegate_0>.<get-values>()
}
local /* final field */ val <$$delegate_0>: Map<K, V>
local /* final field */ val <$$delegate_0>: Map<K, V> = map
val map: Map<K, V>
field = map
get
}
+13 -14
View File
@@ -8,20 +8,6 @@ FILE fqName:<root> fileName:/kt43342.kt
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:ControlFlowInfo modality:OPEN visibility:public superTypes:[kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
value: GET_VAR 'map: kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<init>' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
PROPERTY name:map visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]
EXPRESSION_BODY
GET_VAR 'map: kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<init>' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-map> visibility:public modality:FINAL <> ($this:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>) returnType:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>
correspondingProperty: PROPERTY name:map visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-map> (): kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<get-map>' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
FUN DELEGATED_MEMBER name:containsKey visibility:public modality:OPEN <> ($this:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>, key:K of <root>.ControlFlowInfo) returnType:kotlin.Boolean
overridden:
public abstract fun containsKey (key: K of kotlin.collections.Map): kotlin.Boolean declared in kotlin.collections.Map
@@ -125,6 +111,19 @@ FILE fqName:<root> fileName:/kt43342.kt
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:local [final]' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<get-values>' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
FIELD DELEGATE name:<$$delegate_0> type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:local [final]
EXPRESSION_BODY
GET_VAR 'map: kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<init>' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
PROPERTY name:map visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]
EXPRESSION_BODY
GET_VAR 'map: kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<init>' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-map> visibility:public modality:FINAL <> ($this:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>) returnType:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>
correspondingProperty: PROPERTY name:map visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-map> (): kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:map type:kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> visibility:private [final]' type=kotlin.collections.Map<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> origin=null
receiver: GET_VAR '<this>: <root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> declared in <root>.ControlFlowInfo.<get-map>' type=<root>.ControlFlowInfo<K of <root>.ControlFlowInfo, V of <root>.ControlFlowInfo> 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