[PL] ABI compatibility tests for reworked partial linkage
This commit is contained in:
committed by
Space Team
parent
2a4d880037
commit
4f1155b06f
+11
@@ -0,0 +1,11 @@
|
||||
package lib1
|
||||
|
||||
abstract class AbstractClass {
|
||||
abstract fun foo(): Int
|
||||
abstract val bar: Int
|
||||
}
|
||||
|
||||
interface Interface {
|
||||
fun foo(): Int
|
||||
val bar: Int
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package lib1
|
||||
|
||||
open class AbstractClass
|
||||
interface Interface
|
||||
Vendored
+12
@@ -0,0 +1,12 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.0 -> l1.kt
|
||||
STEP 1:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.1 -> l1.kt
|
||||
STEP 2:
|
||||
dependencies: stdlib
|
||||
modifications:
|
||||
U : l1.kt.0 -> l1.kt
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package lib2
|
||||
|
||||
import lib1.*
|
||||
|
||||
class AbstractClassImpl : AbstractClass() {
|
||||
override fun foo() = 42
|
||||
override val bar = 42
|
||||
}
|
||||
|
||||
class InterfaceImpl : Interface {
|
||||
override fun foo() = 42
|
||||
override val bar = 42
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package lib2
|
||||
|
||||
import lib1.*
|
||||
|
||||
class AbstractClassImpl : AbstractClass()
|
||||
class InterfaceImpl : Interface
|
||||
Vendored
+6
@@ -0,0 +1,6 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib, lib1
|
||||
STEP 1:
|
||||
dependencies: stdlib, lib1
|
||||
modifications:
|
||||
U : l2.kt.1 -> l2.kt
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
import abitestutils.abiTest
|
||||
import lib1.*
|
||||
import lib2.*
|
||||
|
||||
fun box() = abiTest {
|
||||
val abstractClass: AbstractClass = AbstractClassImpl()
|
||||
val _interface: Interface = InterfaceImpl()
|
||||
|
||||
expectFailure(nonImplementedCallable("function 'foo'", "class 'AbstractClassImpl'")) { abstractClass.foo() }
|
||||
expectFailure(nonImplementedCallable("property accessor 'bar.<get-bar>'", "class 'AbstractClassImpl'")) { abstractClass.bar }
|
||||
expectFailure(nonImplementedCallable("function 'foo'", "class 'InterfaceImpl'")) { _interface.foo() }
|
||||
expectFailure(nonImplementedCallable("property accessor 'bar.<get-bar>'", "class 'InterfaceImpl'")) { _interface.bar }
|
||||
}
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
STEP 0:
|
||||
dependencies: stdlib, lib1, lib2
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
MODULES: lib1, lib2, main
|
||||
|
||||
STEP 0:
|
||||
libs: lib1, lib2, main
|
||||
|
||||
STEP 1:
|
||||
libs: lib1, lib2
|
||||
|
||||
STEP 2:
|
||||
libs: lib1
|
||||
Reference in New Issue
Block a user