From bcead48fde910615199cf211f1c4ee8348b985f8 Mon Sep 17 00:00:00 2001 From: Nikolay Igotti Date: Wed, 18 Dec 2019 16:57:26 +0300 Subject: [PATCH] Make IsInstance return proper bool, fixes GH-3686. (#3688) * Make IsInstance return proper bool, fixes GH-3686. * Proper fix. --- .../org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt | 2 +- backend.native/tests/build.gradle | 2 ++ backend.native/tests/produce_dynamic/simple/main.c | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt index 75dff7d1e38..7a42008931e 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/CAdapterGenerator.kt @@ -911,7 +911,7 @@ internal class CAdapterGenerator(val context: Context) : DeclarationDescriptorVi |KObjHeader* DerefStablePointer(void*, KObjHeader**) RUNTIME_NOTHROW; |void* CreateStablePointer(KObjHeader*) RUNTIME_NOTHROW; |void DisposeStablePointer(void*) RUNTIME_NOTHROW; - |int IsInstance(const KObjHeader*, const KTypeInfo*) RUNTIME_NOTHROW; + |${prefix}_KBoolean IsInstance(const KObjHeader*, const KTypeInfo*) RUNTIME_NOTHROW; |void EnterFrame(KObjHeader** start, int parameters, int count) RUNTIME_NOTHROW; |void LeaveFrame(KObjHeader** start, int parameters, int count) RUNTIME_NOTHROW; |void Kotlin_initRuntimeIfNeeded(); diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 413aee2882f..3c2ce4608b7 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -3675,6 +3675,8 @@ dynamicTest("produce_dynamic") { "singleton = I am single\n" + "mutable = foo\n" + "topLevel = 777 3\n" + + "IsInstance1 = PASS\n" + + "IsInstance2 = PASS\n" + "getVector128 = (1, 2, 3, 4)\n" + "Error handler: kotlin.Error: Expected error\n" } diff --git a/backend.native/tests/produce_dynamic/simple/main.c b/backend.native/tests/produce_dynamic/simple/main.c index ef07c9bc5bc..7ddbf5353aa 100644 --- a/backend.native/tests/produce_dynamic/simple/main.c +++ b/backend.native/tests/produce_dynamic/simple/main.c @@ -70,6 +70,9 @@ int main(void) { __ kotlin.root.testNullableWithNulls(nullableIntNull, nullableUnitNull); + printf("IsInstance1 = %s\n", __ IsInstance(singleton.pinned, __ kotlin.root.Singleton._type()) ? "PASS" : "FAIL"); + printf("IsInstance2 = %s\n", !(__ IsInstance(singleton.pinned, __ kotlin.root.Codeable._type())) ? "PASS" : "FAIL"); + testVector128(); __ DisposeStablePointer(singleton.pinned);