[K/N] Fix cast to NativePtr mis-compilation
^KT-59022
This commit is contained in:
committed by
Space Team
parent
af05f4c201
commit
456783436c
@@ -0,0 +1,32 @@
|
||||
// TARGET_BACKEND: NATIVE
|
||||
|
||||
@file:OptIn(kotlinx.cinterop.ExperimentalForeignApi::class)
|
||||
|
||||
import kotlinx.cinterop.*
|
||||
|
||||
fun getNp() : NativePtr? = null
|
||||
fun getOp() : COpaquePointer? = null
|
||||
|
||||
fun box() : String {
|
||||
if ((null as NativePtr?) != null) return "FAIL 1.1"
|
||||
if ((null as? NativePtr) != null) return "FAIL 1.2"
|
||||
if (null !is NativePtr?) return "FAIL 1.3"
|
||||
if (null is NativePtr) return "FAIL 1.4"
|
||||
|
||||
if ((null as COpaquePointer?) != null) return "FAIL 2.1"
|
||||
if ((null as? COpaquePointer) != null) return "FAIL 2.2"
|
||||
if (null !is COpaquePointer?) return "FAIL 2.3"
|
||||
if (null is COpaquePointer) return "FAIL 2.4"
|
||||
|
||||
if ((getNp() as NativePtr?) != null) return "FAIL 3.1"
|
||||
if ((getNp() as? NativePtr) != null) return "FAIL 3.2"
|
||||
if (getNp() !is NativePtr?) return "FAIL 3.3"
|
||||
if (getNp() is NativePtr) return "FAIL 3.4"
|
||||
|
||||
if ((getOp() as COpaquePointer?) != null) return "FAIL 4.1"
|
||||
if ((getOp() as? COpaquePointer) != null) return "FAIL 4.2"
|
||||
if (getOp() !is COpaquePointer?) return "FAIL 4.3"
|
||||
if (getOp() is COpaquePointer) return "FAIL 4.4"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+2
-1
@@ -1628,7 +1628,8 @@ internal class CodeGeneratorVisitor(
|
||||
positionAtEnd(bbExit)
|
||||
appendingTo(resultInstanceOfBB) { br(bbExit) }
|
||||
appendingTo(resultNullBB) { br(bbExit) }
|
||||
val result = phi(value.type.toLLVMType(llvm))
|
||||
require(resultNull.type == resultInstanceOf.type)
|
||||
val result = phi(resultNull.type)
|
||||
addPhiIncoming(result, resultNullBB to resultNull, resultInstanceOfBB to resultInstanceOf)
|
||||
result
|
||||
}
|
||||
|
||||
+6
@@ -3682,6 +3682,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
|
||||
runTest("compiler/testData/codegen/box/casts/objectToPrimitiveWithAssertion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("toNativePointers.kt")
|
||||
public void testToNativePointers() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/casts/toNativePointers.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unitAsAny.kt")
|
||||
public void testUnitAsAny() throws Exception {
|
||||
|
||||
+6
@@ -3760,6 +3760,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
|
||||
runTest("compiler/testData/codegen/box/casts/objectToPrimitiveWithAssertion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("toNativePointers.kt")
|
||||
public void testToNativePointers() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/casts/toNativePointers.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unitAsAny.kt")
|
||||
public void testUnitAsAny() throws Exception {
|
||||
|
||||
+6
@@ -3644,6 +3644,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
|
||||
runTest("compiler/testData/codegen/box/casts/objectToPrimitiveWithAssertion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("toNativePointers.kt")
|
||||
public void testToNativePointers() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/casts/toNativePointers.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unitAsAny.kt")
|
||||
public void testUnitAsAny() throws Exception {
|
||||
|
||||
+6
@@ -3683,6 +3683,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
|
||||
runTest("compiler/testData/codegen/box/casts/objectToPrimitiveWithAssertion.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("toNativePointers.kt")
|
||||
public void testToNativePointers() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/casts/toNativePointers.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("unitAsAny.kt")
|
||||
public void testUnitAsAny() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user