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.
34 lines
621 B
Plaintext
Vendored
34 lines
621 B
Plaintext
Vendored
interface IBase<T : Any?> {
|
|
abstract fun foo(x: Int)
|
|
abstract val bar: Int
|
|
abstract get
|
|
|
|
abstract fun <X : Any?> qux(t: T, x: X)
|
|
|
|
}
|
|
|
|
class Test<TT : Any?> : IBase<TT> {
|
|
constructor(impl: IBase<TT>) /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
override fun foo(x: Int) {
|
|
<this>.#<$$delegate_0>.foo(x = x)
|
|
}
|
|
|
|
override fun <X : Any?> qux(t: TT, x: X) {
|
|
<this>.#<$$delegate_0>.qux</* null */>(t = t, x = x)
|
|
}
|
|
|
|
override val bar: Int
|
|
override get(): Int {
|
|
return <this>.#<$$delegate_0>.<get-bar>()
|
|
}
|
|
|
|
local /* final field */ val <$$delegate_0>: IBase<TT> = impl
|
|
|
|
}
|
|
|