| /* |
| * Copyright 2010-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license |
| * that can be found in the LICENSE file. |
| */ |
| |
| package kotlinPrivateOverride |
| |
| import kotlin.test.* |
| |
| // The intention is to test "virtual adapters" machinery of ObjCExport. |
| // This machinery handles the case when exported Kotlin type is subclassed |
| // by a non-exported (e.g. private) Kotlin type, and the instance of the latter is passed to Obj-C. |
| |
| interface KotlinPrivateOverrideI1 { |
| fun i123AbstractMethod(): Int |
| fun i1OpenMethod(): Int = -1 |
| } |
| |
| interface KotlinPrivateOverrideI2 { |
| fun i123AbstractMethod(): Int |
| fun i234AbstractMethod(): Int |
| fun i2AbstractMethod(): Int |
| } |
| |
| private interface KotlinPrivateOverridePI1 { |
| fun pi1AbstractMethod(): Int |
| } |
| |
| abstract class KotlinPrivateOverrideA1 : KotlinPrivateOverrideI1, KotlinPrivateOverrideI2, KotlinPrivateOverridePI1 { |
| abstract fun a1AbstractMethod(): Int |
| open fun a1OpenMethod(): Int = -2 |
| } |
| |
| interface KotlinPrivateOverrideI3 { |
| fun i123AbstractMethod(): Int |
| fun i234AbstractMethod(): Int |
| fun i3AbstractMethod(): Int |
| } |
| |
| private interface KotlinPrivateOverridePI2 { |
| fun pi2AbstractMethod(): Int |
| } |
| |
| private open class KotlinPrivateOverrideP1 : KotlinPrivateOverrideA1(), KotlinPrivateOverrideI3, KotlinPrivateOverridePI2 { |
| override fun i123AbstractMethod(): Int = 1 |
| override fun i1OpenMethod(): Int = 2 |
| override fun i234AbstractMethod(): Int = 3 |
| override fun i2AbstractMethod(): Int = 4 |
| override fun pi1AbstractMethod(): Int = 5 |
| override fun a1AbstractMethod(): Int = 6 |
| override fun a1OpenMethod(): Int = 7 |
| override fun i3AbstractMethod(): Int = 8 |
| override fun pi2AbstractMethod(): Int = 9 |
| } |
| |
| fun createP1(): Any = KotlinPrivateOverrideP1() |
| |
| interface KotlinPrivateOverrideI4 { |
| fun i234AbstractMethod(): Int |
| fun i4AbstractMethod(): Int |
| } |
| |
| private interface KotlinPrivateOverridePI3 { |
| fun pi3AbstractMethod(): Int |
| } |
| |
| private class KotlinPrivateOverrideP12 : KotlinPrivateOverrideP1(), KotlinPrivateOverrideI4, KotlinPrivateOverridePI3 { |
| override fun i123AbstractMethod(): Int = 11 |
| override fun i1OpenMethod(): Int = 12 |
| override fun i234AbstractMethod(): Int = 13 |
| override fun i2AbstractMethod(): Int = 14 |
| override fun pi1AbstractMethod(): Int = 15 |
| override fun a1AbstractMethod(): Int = 16 |
| override fun a1OpenMethod(): Int = 17 |
| override fun i3AbstractMethod(): Int = 18 |
| override fun pi2AbstractMethod(): Int = 19 |
| override fun i4AbstractMethod(): Int = 20 |
| override fun pi3AbstractMethod(): Int = 21 |
| } |
| |
| fun createP12(): Any = KotlinPrivateOverrideP12() |