7c16528560
Fixed #KT-58088
27 lines
1.6 KiB
Kotlin
Vendored
27 lines
1.6 KiB
Kotlin
Vendored
import abitestutils.abiTest
|
|
import abitestutils.TestBuilder
|
|
|
|
fun box() = abiTest {
|
|
val ecifaec = ExternalClassInheritedFromAbstractExternalClass()
|
|
val ecifeiifoec = ExternalClassInheritedFromExternalInterfaceInheritedFromOpenExternalClass()
|
|
|
|
expectSuccess("ExternalClassInheritedFromAbstractExternalClass.abstractFunction") { ecifaec.abstractFunction() }
|
|
expectSuccess("ExternalClassInheritedFromAbstractExternalClass.removedAbstractFunction") { ecifaec.removedAbstractFunction() }
|
|
|
|
val expectedExceptionMessage = when (testMode.isWasm) {
|
|
true -> "Exception was thrown while running JavaScript code"
|
|
else -> "Calling abstract function AbstractExternalClass.addedAbstractFunction"
|
|
}
|
|
expectRuntimeFailure(expectedExceptionMessage) { ecifaec.addedAbstractFunction() }
|
|
|
|
expectSuccess("AbstractExternalClass.function") { ecifaec.function() }
|
|
expectFailure(linkage("Function 'removedFunction' can not be called: No function found for symbol '/ExternalClassInheritedFromAbstractExternalClass.removedFunction'")) { ecifaec.callRemovedFunction() }
|
|
expectSuccess("AbstractExternalClass.addedFunction") { ecifaec.addedFunction() }
|
|
|
|
expectSuccess("OpenExternalClass.function") { ecifeiifoec.function() }
|
|
expectSuccess("ExternalClassInheritedFromExternalInterfaceInheritedFromOpenExternalClass.abstractFunction") { ecifeiifoec.abstractFunction() }
|
|
}
|
|
|
|
private fun TestBuilder.expectRuntimeFailure(errorMessage: String, block: () -> Any) =
|
|
expectFailure(custom { throwable -> throwable !is Exception && throwable.message == errorMessage }) { block() }
|