[klib] Add an option to write out header klibs
The header klib is supposed to only contain the public abi of the module similar to jvm-abi-gen. It is intended to be used as a dependency for other klib compilations instead of the full klib for compilation avoidance. ^KT-60807
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
package lib
|
||||
|
||||
interface I {
|
||||
val iProperty: Int
|
||||
fun iMethod(): Int
|
||||
}
|
||||
|
||||
open class A : I {
|
||||
override val iProperty: Int = 0
|
||||
override fun iMethod(): Int = 10
|
||||
|
||||
val aProperty: Int = 20
|
||||
fun aMethod(): Int = 30
|
||||
inline fun aInlineMethod(): Int = 40
|
||||
|
||||
private class AB {}
|
||||
|
||||
companion object {
|
||||
const val aConst: Int = 50
|
||||
}
|
||||
}
|
||||
|
||||
class B : A() {
|
||||
val bProperty: Int = 60
|
||||
fun bMethod(): Int = 70
|
||||
inline fun bInlineMethod(): Int = 80
|
||||
|
||||
companion object {
|
||||
const val bConst: Int = 90
|
||||
}
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package app
|
||||
|
||||
import lib.*
|
||||
|
||||
fun useI(i: I) {
|
||||
i.iProperty
|
||||
i.iMethod()
|
||||
}
|
||||
|
||||
fun useA(a: A) {
|
||||
a.iProperty
|
||||
a.iMethod()
|
||||
|
||||
a.aProperty
|
||||
a.aMethod()
|
||||
a.aInlineMethod()
|
||||
A.aConst
|
||||
}
|
||||
|
||||
fun useB(b: B) {
|
||||
b.iProperty
|
||||
b.iMethod()
|
||||
|
||||
b.aProperty
|
||||
b.aMethod()
|
||||
b.aInlineMethod()
|
||||
|
||||
b.bProperty
|
||||
b.bMethod()
|
||||
b.bInlineMethod()
|
||||
B.bConst
|
||||
}
|
||||
|
||||
fun runAppAndReturnOk(): String {
|
||||
useI(A())
|
||||
useA(A())
|
||||
useB(B())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user