| interface IBase<A : Any?> { |
| abstract fun <B : Any?> foo(a: A, b: B) |
| abstract val <C : Any?> C.id: Map<A, C>? |
| abstract get |
| |
| abstract var <D : Any?> List<D>.x: D? |
| abstract get |
| abstract set |
| |
| } |
| |
| class Test1<E : Any?> : IBase<E> { |
| constructor(i: IBase<E>) /* primary */ { |
| super/*Any*/() |
| /* <init>() */ |
| |
| } |
| |
| private /* final field */ val $$delegate_0: IBase<E> = i |
| override val <C : Any?> C.id: Map<E, C>? |
| override get(): Map<E, C>? { |
| return (<this>.#$$delegate_0, <this>).<get-id><C>() |
| } |
| |
| override var <D : Any?> List<D>.x: D? |
| override get(): D? { |
| return (<this>.#$$delegate_0, <this>).<get-x><D>() |
| } |
| override set(<set-?>: D?) { |
| (<this>.#$$delegate_0, <this>).<set-x><D>(<set-?> = <set-?>) |
| } |
| |
| override fun <B : Any?> foo(a: E, b: B) { |
| <this>.#$$delegate_0.foo<B>(a = a, b = b) |
| } |
| |
| } |
| |
| class Test2 : IBase<String> { |
| constructor(j: IBase<String>) /* primary */ { |
| super/*Any*/() |
| /* <init>() */ |
| |
| } |
| |
| var j: IBase<String> |
| field = j |
| get |
| set |
| |
| private /* final field */ val $$delegate_0: IBase<String> = j |
| override val <C : Any?> C.id: Map<String, C>? |
| override get(): Map<String, C>? { |
| return (<this>.#$$delegate_0, <this>).<get-id><C>() |
| } |
| |
| override var <D : Any?> List<D>.x: D? |
| override get(): D? { |
| return (<this>.#$$delegate_0, <this>).<get-x><D>() |
| } |
| override set(<set-?>: D?) { |
| (<this>.#$$delegate_0, <this>).<set-x><D>(<set-?> = <set-?>) |
| } |
| |
| override fun <B : Any?> foo(a: String, b: B) { |
| <this>.#$$delegate_0.foo<B>(a = a, b = b) |
| } |
| |
| } |