d4b0688690
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.
67 lines
1.3 KiB
Plaintext
Vendored
67 lines
1.3 KiB
Plaintext
Vendored
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
|
|
|
|
}
|