[K/N] Move cinterop tests from standalone to codegen/box

^KT-61259
This commit is contained in:
Vladimir Sukharev
2023-12-05 22:40:02 +01:00
committed by Space Team
parent 0b0ba3160f
commit c09e8909d4
40 changed files with 672 additions and 266 deletions
@@ -22,7 +22,7 @@ import java.util.regex.Pattern;
public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBoxCodegenBasedTest { public class LLFirBlackBoxCodegenBasedTestGenerated extends AbstractLLFirBlackBoxCodegenBasedTest {
@Test @Test
public void testAllFilesPresentInBox() throws Exception { public void testAllFilesPresentInBox() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box"), Pattern.compile("^(.+)\\.kt$"), null, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box"), Pattern.compile("^(.+)\\.kt$"), null, true, "cinterop");
} }
@Nested @Nested
@@ -22,7 +22,7 @@ import java.util.regex.Pattern;
public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFirReversedBlackBoxCodegenBasedTest { public class LLFirReversedBlackBoxCodegenBasedTestGenerated extends AbstractLLFirReversedBlackBoxCodegenBasedTest {
@Test @Test
public void testAllFilesPresentInBox() throws Exception { public void testAllFilesPresentInBox() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box"), Pattern.compile("^(.+)\\.kt$"), null, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box"), Pattern.compile("^(.+)\\.kt$"), null, true, "cinterop");
} }
@Nested @Nested
@@ -6240,6 +6240,16 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -6240,6 +6240,16 @@ public class FirLightTreeBlackBoxCodegenWithIrFakeOverrideGeneratorTestGenerated
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -6240,6 +6240,16 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -1,3 +1,4 @@
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: carrayPointers.def // FILE: carrayPointers.def
--- ---
@@ -18,7 +19,7 @@ import carrayPointers.*
import kotlin.test.* import kotlin.test.*
import kotlinx.cinterop.* import kotlinx.cinterop.*
fun main() { fun box(): String {
arrayPointer = globalArray arrayPointer = globalArray
assertEquals(globalArray[0], arrayPointer!![0]) assertEquals(globalArray[0], arrayPointer!![0])
arrayPointer!![0] = 15 arrayPointer!![0] = 15
@@ -29,4 +30,5 @@ fun main() {
struct.arrayPointer = globalArray struct.arrayPointer = globalArray
assertEquals(globalArray[0], struct.arrayPointer!![0]) assertEquals(globalArray[0], struct.arrayPointer!![0])
} }
return "OK"
} }
@@ -1,3 +1,4 @@
// TARGET_BACKEND: NATIVE
// FREE_CINTEROP_ARGS: -header auxiliaryCppSources.h // FREE_CINTEROP_ARGS: -header auxiliaryCppSources.h
// MODULE: cinterop // MODULE: cinterop
@@ -20,7 +21,7 @@ extern "C" {
#include <string> #include <string>
#include "auxiliaryCppSources.h" #include "auxiliaryCppSources.h"
static std::string _name = "Hello from C++"; static std::string _name = "OK";
const char* name() { const char* name() {
return _name.c_str(); return _name.c_str();
@@ -35,6 +36,6 @@ import auxiliaryCppSources.*
import kotlin.test.* import kotlin.test.*
import kotlinx.cinterop.* import kotlinx.cinterop.*
fun main() { fun box(): String {
assertEquals(name()!!.toKString(), "Hello from C++") return name()!!.toKString()
} }
@@ -4,6 +4,7 @@
*/ */
// May need disabling when gcSchedulerType=aggressive . since it may be too slow // May need disabling when gcSchedulerType=aggressive . since it may be too slow
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: bitfields.def // FILE: bitfields.def
--- ---
@@ -119,7 +120,7 @@ fun test(s: S, x1: Long, x2: B2, x3: UShort, x4: UInt, x5: Int, x6: Long, x7: E,
check(s, x1, x2, x3, x4, x5, x6, x7, x8, x9) check(s, x1, x2, x3, x4, x5, x6, x7, x8, x9)
} }
fun main(args: Array<String>) { fun box(): String {
memScoped { memScoped {
val s = alloc<S>() val s = alloc<S>()
for (x1 in -1L..0L) for (x1 in -1L..0L)
@@ -133,4 +134,5 @@ fun main(args: Array<String>) {
for (x9 in intArrayOf(-8, -1, 0, 5, 7)) // 4 bits width for (x9 in intArrayOf(-8, -1, 0, 5, 7)) // 4 bits width
test(s, x1, x2, x3.toUShort(), x4, x5, x6, x7, x8, x9) test(s, x1, x2, x3.toUShort(), x4, x5, x6, x7, x8, x9)
} }
return "OK"
} }
@@ -2,6 +2,7 @@
* Copyright 2010-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license * Copyright 2010-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file. * that can be found in the LICENSE file.
*/ */
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: ccallbacksAndVarargs.def // FILE: ccallbacksAndVarargs.def
--- ---
@@ -89,10 +90,12 @@ import kotlin.test.*
import kotlinx.cinterop.* import kotlinx.cinterop.*
import ccallbacksAndVarargs.* import ccallbacksAndVarargs.*
fun main() { fun box(): String {
testStructCallbacks() testStructCallbacks()
testVarargs() testVarargs()
testCallableReferences() testCallableReferences()
return "OK"
} }
fun testStructCallbacks() { fun testStructCallbacks() {
@@ -2,6 +2,7 @@
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: cenums.def // FILE: cenums.def
--- ---
@@ -20,7 +21,7 @@ import kotlinx.cinterop.*
import kotlin.test.* import kotlin.test.*
@OptIn(kotlin.ExperimentalStdlibApi::class) @OptIn(kotlin.ExperimentalStdlibApi::class)
fun main() { fun box(): String {
memScoped { memScoped {
val e = alloc<E.Var>() val e = alloc<E.Var>()
e.value = E.C e.value = E.C
@@ -39,4 +40,5 @@ fun main() {
// assertEquals(entries[0], E.A) // assertEquals(entries[0], E.A)
// assertEquals(entries[1], E.B) // assertEquals(entries[1], E.B)
// assertEquals(entries[2], E.C) // assertEquals(entries[2], E.C)
return "OK"
} }
@@ -1,5 +1,6 @@
// This test mostly checks frontend behaviour. // This test mostly checks frontend behaviour.
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: cForwardDeclarations.def // FILE: cForwardDeclarations.def
--- ---
@@ -37,7 +38,7 @@ fun <T1 : T2, T2> checkSubtype2() {}
fun checkDifferentTypes(s: StructDeclared?) = 1 fun checkDifferentTypes(s: StructDeclared?) = 1
fun checkDifferentTypes(s: StructDefined?) = 2 fun checkDifferentTypes(s: StructDefined?) = 2
fun main() { fun box(): String {
checkSubtype2<StructDeclared, COpaque>() checkSubtype2<StructDeclared, COpaque>()
checkSubtype2<StructDefined, CStructVar>() checkSubtype2<StructDefined, CStructVar>()
@@ -50,4 +51,6 @@ fun main() {
assertEquals(-1, useStructDeclared(declared?.ptr)) assertEquals(-1, useStructDeclared(declared?.ptr))
assertEquals(-2, useStructDefined(defined?.ptr)) assertEquals(-2, useStructDefined(defined?.ptr))
return "OK"
} }
@@ -1,9 +1,10 @@
// OUTPUT_DATA_FILE: funptr.out
/* /*
* Copyright 2010-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license * Copyright 2010-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file. * that can be found in the LICENSE file.
*/ */
// TARGET_BACKEND: NATIVE
// OUTPUT_DATA_FILE: funptr.out
// MODULE: cinterop // MODULE: cinterop
// FILE: cfunptr.def // FILE: cfunptr.def
headerFilter = NOTHING headerFilter = NOTHING
@@ -115,7 +116,7 @@ typealias NotSoLongSignatureFunction = (
Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int Int, Int, Int, Int, Int, Int, Int, Int, Int, Int, Int
) -> Int ) -> Int
fun main(args: Array<String>) { fun box(): String {
val atoiPtr = getAtoiPtr()!! val atoiPtr = getAtoiPtr()!!
val getPrintIntPtrPtr = getGetPrintIntPtrPtr()!! val getPrintIntPtrPtr = getGetPrintIntPtrPtr()!!
@@ -144,6 +145,8 @@ fun main(args: Array<String>) {
val notSoLongSignaturePtr: CPointer<CFunction<NotSoLongSignatureFunction>>? = getNotSoLongSignatureFunctionPtr() val notSoLongSignaturePtr: CPointer<CFunction<NotSoLongSignatureFunction>>? = getNotSoLongSignatureFunctionPtr()
printIntPtr(notSoLongSignaturePtr!!.invoke(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) printIntPtr(notSoLongSignaturePtr!!.invoke(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
printIntPtr(notSoLongSignatureFunction(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) printIntPtr(notSoLongSignatureFunction(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0))
return "OK"
} }
fun Boolean.ifThenOneElseZero() = if (this) 1 else 0 fun Boolean.ifThenOneElseZero() = if (this) 1 else 0
@@ -3,6 +3,7 @@
* that can be found in the LICENSE file. * that can be found in the LICENSE file.
*/ */
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: cglobals.def // FILE: cglobals.def
--- ---
@@ -20,7 +21,7 @@ int g5[2][2] = { 15, 16, 17, 18 };
struct S* const g6 = &g3; struct S* const g6 = &g3;
void foo() { void globals_foo() {
// Test that local vars are not treated as global ones. // Test that local vars are not treated as global ones.
float g1; float g1;
} }
@@ -47,7 +48,7 @@ _Pragma("clang assume_nonnull end")
import kotlinx.cinterop.* import kotlinx.cinterop.*
import cglobals.* import cglobals.*
fun main(args: Array<String>) { fun box(): String {
assert(g1__ == 42) assert(g1__ == 42)
assert(g2 == 17) assert(g2 == 17)
@@ -71,4 +72,6 @@ fun main(args: Array<String>) {
assert(g8.toLong() == 0x1L) assert(g8.toLong() == 0x1L)
assert(g9.toLong() == 0x2L) assert(g9.toLong() == 0x2L)
return "OK"
} }
@@ -1,11 +1,12 @@
// FREE_CINTEROP_ARGS: -header library.h // FREE_CINTEROP_ARGS: -header incompleteTypes.h
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: library.def // FILE: incompleteTypes.def
# The def file is intentionally empty # The def file is intentionally empty
# `library.h` is meant to be included via `-header` option of cinterop tool # `incompleteTypes.h` is meant to be included via `-header` option of cinterop tool
// FILE: library.h // FILE: incompleteTypes.h
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@@ -34,9 +35,9 @@ extern "C" {
} }
#endif #endif
// FILE: library.cpp // FILE: incompleteTypes.cpp
#include <string> #include <string>
#include "library.h" #include "incompleteTypes.h"
extern "C" { extern "C" {
@@ -94,11 +95,11 @@ extern "C" {
@file:OptIn(kotlinx.cinterop.ExperimentalForeignApi::class) @file:OptIn(kotlinx.cinterop.ExperimentalForeignApi::class)
import library.* import incompleteTypes.*
import kotlinx.cinterop.* import kotlinx.cinterop.*
import kotlin.test.* import kotlin.test.*
fun main() { fun box(): String {
assertNotNull(s.ptr) assertNotNull(s.ptr)
assertNotNull(u.ptr) assertNotNull(u.ptr)
assertNotNull(array) assertNotNull(array)
@@ -119,4 +120,5 @@ fun main() {
for (i in 0 until arrayLength()) { for (i in 0 until arrayLength()) {
assertEquals(0x1, array[i]) assertEquals(0x1, array[i])
} }
return "OK"
} }
@@ -1,3 +1,4 @@
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: kt43265.def // FILE: kt43265.def
strictEnums = bcm2835FunctionSelect strictEnums = bcm2835FunctionSelect
@@ -15,6 +16,8 @@ import kt43265.*
import kotlin.test.* import kotlin.test.*
@kotlinx.cinterop.ExperimentalForeignApi @kotlinx.cinterop.ExperimentalForeignApi
fun main() { fun box(): String {
assertEquals(bcm2835FunctionSelect.BCM2835_GPIO_FSEL_ALT3, bcm2835FunctionSelect.BCM2835_GPIO_FSEL_MASK) assertEquals(bcm2835FunctionSelect.BCM2835_GPIO_FSEL_ALT3, bcm2835FunctionSelect.BCM2835_GPIO_FSEL_MASK)
return "OK"
} }
@@ -1,3 +1,4 @@
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: kt44283.def // FILE: kt44283.def
--- ---
@@ -39,7 +40,7 @@ import kotlin.test.*
val callbackCounter = AtomicInt(0) val callbackCounter = AtomicInt(0)
@ExperimentalForeignApi @ExperimentalForeignApi
fun main() { fun box(): String {
val func = staticCFunction<CValue<TestStruct>, Unit> { val func = staticCFunction<CValue<TestStruct>, Unit> {
kotlin.native.runtime.GC.collect() // Helps to ensure that "runtime" is already initialized. kotlin.native.runtime.GC.collect() // Helps to ensure that "runtime" is already initialized.
@@ -52,4 +53,6 @@ fun main() {
assertEquals(0, callbackCounter.value) assertEquals(0, callbackCounter.value)
invokeFromThread(func.reinterpret()) invokeFromThread(func.reinterpret())
assertEquals(1, callbackCounter.value) assertEquals(1, callbackCounter.value)
return "OK"
} }
@@ -1,3 +1,4 @@
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: kt54284.def // FILE: kt54284.def
--- ---
@@ -17,11 +18,13 @@ import kt54284.*
import kotlin.test.* import kotlin.test.*
@ExperimentalForeignApi @ExperimentalForeignApi
fun main() { fun box(): String {
assertEquals("FILE:__FILE__", KFILE) assertEquals("FILE:__FILE__", KFILE)
assertEquals("LINE:__LINE__", KLINE) assertEquals("LINE:__LINE__", KLINE)
assertEquals("TIME:__TIME__", KTIME) assertEquals("TIME:__TIME__", KTIME)
assertEquals("DATE:__DATE__", KDATE) assertEquals("DATE:__DATE__", KDATE)
assertEquals("NAME:__FILE_NAME__", KFILENAME) assertEquals("NAME:__FILE_NAME__", KFILENAME)
assertEquals("BASE:__BASE_FILE__", KBASEFILE) assertEquals("BASE:__BASE_FILE__", KBASEFILE)
return "OK"
} }
@@ -1,3 +1,4 @@
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: kt54284_fmodules.def // FILE: kt54284_fmodules.def
compilerOpts = -fmodules compilerOpts = -fmodules
@@ -17,11 +18,13 @@ import kt54284_fmodules.*
import kotlin.test.* import kotlin.test.*
@ExperimentalForeignApi @ExperimentalForeignApi
fun main() { fun box(): String {
assertEquals("FILE:__FILE__", KFILE) assertEquals("FILE:__FILE__", KFILE)
assertEquals("LINE:__LINE__", KLINE) assertEquals("LINE:__LINE__", KLINE)
assertEquals("TIME:__TIME__", KTIME) assertEquals("TIME:__TIME__", KTIME)
assertEquals("DATE:__DATE__", KDATE) assertEquals("DATE:__DATE__", KDATE)
assertEquals("NAME:__FILE_NAME__", KFILENAME) assertEquals("NAME:__FILE_NAME__", KFILENAME)
assertEquals("BASE:__BASE_FILE__", KBASEFILE) assertEquals("BASE:__BASE_FILE__", KBASEFILE)
return "OK"
} }
@@ -1,3 +1,4 @@
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: kt63048.def // FILE: kt63048.def
language = Objective-C language = Objective-C
@@ -42,7 +43,9 @@ class ImplWithoutOverride : WithClassProperty() {
} }
} }
fun main() { fun box(): String {
assertEquals("42", Impl.stringProperty()) assertEquals("42", Impl.stringProperty())
assertEquals("153", ImplWithoutOverride.stringProperty()) assertEquals("153", ImplWithoutOverride.stringProperty())
return "OK"
} }
@@ -1,6 +1,6 @@
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: leakMemoryWithRunningThreadUnchecked.def // FILE: leakMemoryWithRunningThreadUnchecked.def
package leakMemoryWithRunningThreadUnchecked
--- ---
void test_RunInNewThread(void (*)()); void test_RunInNewThread(void (*)());
@@ -58,7 +58,7 @@ fun ensureInititalized() {
global.value = 1 global.value = 1
} }
fun main() { fun box(): String {
Platform.isMemoryLeakCheckerActive = true Platform.isMemoryLeakCheckerActive = true
kotlin.native.runtime.Debugging.forceCheckedShutdown = false kotlin.native.runtime.Debugging.forceCheckedShutdown = false
assertTrue(global.value == 0) assertTrue(global.value == 0)
@@ -67,4 +67,6 @@ fun main() {
assertTrue(global.value == 1) assertTrue(global.value == 1)
// Now exiting. With unchecked shutdown, we exit quietly, even though there're // Now exiting. With unchecked shutdown, we exit quietly, even though there're
// unfinished threads with runtimes. // unfinished threads with runtimes.
return "OK"
} }
@@ -1,3 +1,4 @@
// TARGET_BACKEND: NATIVE
// MODULE: cinterop // MODULE: cinterop
// FILE: toKString.def // FILE: toKString.def
--- ---
@@ -17,10 +18,12 @@ import kotlinx.cinterop.*
import kotlin.native.* import kotlin.native.*
import kotlin.test.* import kotlin.test.*
fun main() { fun box(): String {
assertEquals("", empty()!!.toKStringFromUtf8()) assertEquals("", empty()!!.toKStringFromUtf8())
assertEquals("foo", foo()!!.toKStringFromUtf8()) assertEquals("foo", foo()!!.toKStringFromUtf8())
assertEquals("куку", kuku()!!.toKStringFromUtf8()) assertEquals("куку", kuku()!!.toKStringFromUtf8())
assertEquals("\uFFFD\uFFFD", invalid_utf8()!!.toKStringFromUtf8()) assertEquals("\uFFFD\uFFFD", invalid_utf8()!!.toKStringFromUtf8())
assertEquals("before zero", zero_in_the_middle()!!.toKStringFromUtf8()) assertEquals("before zero", zero_in_the_middle()!!.toKStringFromUtf8())
return "OK"
} }
@@ -6006,6 +6006,16 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -6240,6 +6240,16 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -6240,6 +6240,16 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -5452,6 +5452,19 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
} }
} }
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class Cinterop extends AbstractLightAnalysisModeTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
}
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) @RunWith(JUnit3RunnerWithInners.class)
@@ -323,11 +323,17 @@ internal fun TestGroupSuite.generateFirLowLevelApiTests() {
} }
testClass<AbstractLLFirBlackBoxCodegenBasedTest> { testClass<AbstractLLFirBlackBoxCodegenBasedTest> {
model("codegen/box") model(
"codegen/box",
excludeDirs = listOf("cinterop") // CInterop tests contain .DEF .H .CPP .M files, which are invalid for Compiler Core new test system
)
} }
testClass<AbstractLLFirReversedBlackBoxCodegenBasedTest> { testClass<AbstractLLFirReversedBlackBoxCodegenBasedTest> {
model("codegen/box") model(
"codegen/box",
excludeDirs = listOf("cinterop") // CInterop tests contain .DEF .H .CPP .M files, which are invalid for Compiler Core new test system
)
} }
testClass<AbstractLLFirBlackBoxCodegenBasedTest>(suiteTestClassName = "LLFirBlackBoxModernJdkCodegenBasedTestGenerated") { testClass<AbstractLLFirBlackBoxCodegenBasedTest>(suiteTestClassName = "LLFirBlackBoxModernJdkCodegenBasedTestGenerated") {
@@ -4584,6 +4584,16 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -4584,6 +4584,16 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -4584,6 +4584,16 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -4584,6 +4584,16 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -4736,6 +4736,115 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
@Tag("frontend-fir")
@FirPipeline()
@UseExtTestCaseGroupProvider()
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("arrayPointers.kt")
public void testArrayPointers() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/arrayPointers.kt");
}
@Test
@TestMetadata("auxiliarySources.kt")
public void testAuxiliarySources() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/auxiliarySources.kt");
}
@Test
@TestMetadata("bitfields.kt")
public void testBitfields() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/bitfields.kt");
}
@Test
@TestMetadata("callbacksAndVarargs.kt")
public void testCallbacksAndVarargs() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/callbacksAndVarargs.kt");
}
@Test
@TestMetadata("enums.kt")
public void testEnums() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/enums.kt");
}
@Test
@TestMetadata("forwardDeclarations.kt")
public void testForwardDeclarations() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/forwardDeclarations.kt");
}
@Test
@TestMetadata("funptr.kt")
public void testFunptr() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/funptr.kt");
}
@Test
@TestMetadata("globals.kt")
public void testGlobals() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/globals.kt");
}
@Test
@TestMetadata("incompleteTypes.kt")
public void testIncompleteTypes() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/incompleteTypes.kt");
}
@Test
@TestMetadata("kt43265.kt")
public void testKt43265() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt43265.kt");
}
@Test
@TestMetadata("kt44283.kt")
public void testKt44283() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt44283.kt");
}
@Test
@TestMetadata("kt54284.kt")
public void testKt54284() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt54284.kt");
}
@Test
@TestMetadata("kt54284_fmodules.kt")
public void testKt54284_fmodules() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt54284_fmodules.kt");
}
@Test
@TestMetadata("kt63048.kt")
public void testKt63048() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt63048.kt");
}
@Test
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
public void testLeakMemoryWithRunningThreadUnchecked() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/leakMemoryWithRunningThreadUnchecked.kt");
}
@Test
@TestMetadata("toKString.kt")
public void testToKString() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/toKString.kt");
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -4844,6 +4844,117 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
@Tag("frontend-fir")
@FirPipeline()
@UseExtTestCaseGroupProvider()
@UsePartialLinkage(mode = Mode.DISABLED)
@Tag("no-partial-linkage-may-be-skipped")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("arrayPointers.kt")
public void testArrayPointers() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/arrayPointers.kt");
}
@Test
@TestMetadata("auxiliarySources.kt")
public void testAuxiliarySources() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/auxiliarySources.kt");
}
@Test
@TestMetadata("bitfields.kt")
public void testBitfields() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/bitfields.kt");
}
@Test
@TestMetadata("callbacksAndVarargs.kt")
public void testCallbacksAndVarargs() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/callbacksAndVarargs.kt");
}
@Test
@TestMetadata("enums.kt")
public void testEnums() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/enums.kt");
}
@Test
@TestMetadata("forwardDeclarations.kt")
public void testForwardDeclarations() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/forwardDeclarations.kt");
}
@Test
@TestMetadata("funptr.kt")
public void testFunptr() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/funptr.kt");
}
@Test
@TestMetadata("globals.kt")
public void testGlobals() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/globals.kt");
}
@Test
@TestMetadata("incompleteTypes.kt")
public void testIncompleteTypes() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/incompleteTypes.kt");
}
@Test
@TestMetadata("kt43265.kt")
public void testKt43265() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt43265.kt");
}
@Test
@TestMetadata("kt44283.kt")
public void testKt44283() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt44283.kt");
}
@Test
@TestMetadata("kt54284.kt")
public void testKt54284() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt54284.kt");
}
@Test
@TestMetadata("kt54284_fmodules.kt")
public void testKt54284_fmodules() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt54284_fmodules.kt");
}
@Test
@TestMetadata("kt63048.kt")
public void testKt63048() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt63048.kt");
}
@Test
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
public void testLeakMemoryWithRunningThreadUnchecked() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/leakMemoryWithRunningThreadUnchecked.kt");
}
@Test
@TestMetadata("toKString.kt")
public void testToKString() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/toKString.kt");
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -34,117 +34,6 @@ public class FirNativeStandaloneTestGenerated extends AbstractNativeBlackBoxTest
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/testData/standalone"), Pattern.compile("^(.+)\\.kt$"), null, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/testData/standalone"), Pattern.compile("^(.+)\\.kt$"), null, true);
} }
@Nested
@TestMetadata("native/native.tests/testData/standalone/cinterop")
@TestDataPath("$PROJECT_ROOT")
@Tag("standalone")
@EnforcedProperty(property = ClassLevelProperty.TEST_KIND, propertyValue = "STANDALONE_NO_TR")
@UseStandardTestCaseGroupProvider()
@Tag("frontend-fir")
@FirPipeline()
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/testData/standalone/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("arrayPointers.kt")
public void testArrayPointers() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/arrayPointers.kt");
}
@Test
@TestMetadata("auxiliarySources.kt")
public void testAuxiliarySources() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/auxiliarySources.kt");
}
@Test
@TestMetadata("bitfields.kt")
public void testBitfields() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/bitfields.kt");
}
@Test
@TestMetadata("callbacksAndVarargs.kt")
public void testCallbacksAndVarargs() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/callbacksAndVarargs.kt");
}
@Test
@TestMetadata("enums.kt")
public void testEnums() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/enums.kt");
}
@Test
@TestMetadata("forwardDeclarations.kt")
public void testForwardDeclarations() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/forwardDeclarations.kt");
}
@Test
@TestMetadata("funptr.kt")
public void testFunptr() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/funptr.kt");
}
@Test
@TestMetadata("globals.kt")
public void testGlobals() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/globals.kt");
}
@Test
@TestMetadata("incompleteTypes.kt")
public void testIncompleteTypes() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/incompleteTypes.kt");
}
@Test
@TestMetadata("kt43265.kt")
public void testKt43265() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt43265.kt");
}
@Test
@TestMetadata("kt44283.kt")
public void testKt44283() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt44283.kt");
}
@Test
@TestMetadata("kt54284.kt")
public void testKt54284() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt54284.kt");
}
@Test
@TestMetadata("kt54284_fmodules.kt")
public void testKt54284_fmodules() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt54284_fmodules.kt");
}
@Test
@TestMetadata("kt63048.kt")
public void testKt63048() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt63048.kt");
}
@Test
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
public void testLeakMemoryWithRunningThreadUnchecked() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/leakMemoryWithRunningThreadUnchecked.kt");
}
@Test
@TestMetadata("toKString.kt")
public void testToKString() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/toKString.kt");
}
}
@Nested @Nested
@TestMetadata("native/native.tests/testData/standalone/console") @TestMetadata("native/native.tests/testData/standalone/console")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -4628,6 +4628,113 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
@UseExtTestCaseGroupProvider()
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("arrayPointers.kt")
public void testArrayPointers() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/arrayPointers.kt");
}
@Test
@TestMetadata("auxiliarySources.kt")
public void testAuxiliarySources() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/auxiliarySources.kt");
}
@Test
@TestMetadata("bitfields.kt")
public void testBitfields() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/bitfields.kt");
}
@Test
@TestMetadata("callbacksAndVarargs.kt")
public void testCallbacksAndVarargs() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/callbacksAndVarargs.kt");
}
@Test
@TestMetadata("enums.kt")
public void testEnums() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/enums.kt");
}
@Test
@TestMetadata("forwardDeclarations.kt")
public void testForwardDeclarations() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/forwardDeclarations.kt");
}
@Test
@TestMetadata("funptr.kt")
public void testFunptr() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/funptr.kt");
}
@Test
@TestMetadata("globals.kt")
public void testGlobals() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/globals.kt");
}
@Test
@TestMetadata("incompleteTypes.kt")
public void testIncompleteTypes() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/incompleteTypes.kt");
}
@Test
@TestMetadata("kt43265.kt")
public void testKt43265() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt43265.kt");
}
@Test
@TestMetadata("kt44283.kt")
public void testKt44283() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt44283.kt");
}
@Test
@TestMetadata("kt54284.kt")
public void testKt54284() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt54284.kt");
}
@Test
@TestMetadata("kt54284_fmodules.kt")
public void testKt54284_fmodules() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt54284_fmodules.kt");
}
@Test
@TestMetadata("kt63048.kt")
public void testKt63048() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt63048.kt");
}
@Test
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
public void testLeakMemoryWithRunningThreadUnchecked() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/leakMemoryWithRunningThreadUnchecked.kt");
}
@Test
@TestMetadata("toKString.kt")
public void testToKString() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/toKString.kt");
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -4737,6 +4737,115 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
@UseExtTestCaseGroupProvider()
@UsePartialLinkage(mode = Mode.DISABLED)
@Tag("no-partial-linkage-may-be-skipped")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true);
}
@Test
@TestMetadata("arrayPointers.kt")
public void testArrayPointers() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/arrayPointers.kt");
}
@Test
@TestMetadata("auxiliarySources.kt")
public void testAuxiliarySources() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/auxiliarySources.kt");
}
@Test
@TestMetadata("bitfields.kt")
public void testBitfields() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/bitfields.kt");
}
@Test
@TestMetadata("callbacksAndVarargs.kt")
public void testCallbacksAndVarargs() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/callbacksAndVarargs.kt");
}
@Test
@TestMetadata("enums.kt")
public void testEnums() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/enums.kt");
}
@Test
@TestMetadata("forwardDeclarations.kt")
public void testForwardDeclarations() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/forwardDeclarations.kt");
}
@Test
@TestMetadata("funptr.kt")
public void testFunptr() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/funptr.kt");
}
@Test
@TestMetadata("globals.kt")
public void testGlobals() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/globals.kt");
}
@Test
@TestMetadata("incompleteTypes.kt")
public void testIncompleteTypes() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/incompleteTypes.kt");
}
@Test
@TestMetadata("kt43265.kt")
public void testKt43265() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt43265.kt");
}
@Test
@TestMetadata("kt44283.kt")
public void testKt44283() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt44283.kt");
}
@Test
@TestMetadata("kt54284.kt")
public void testKt54284() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt54284.kt");
}
@Test
@TestMetadata("kt54284_fmodules.kt")
public void testKt54284_fmodules() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt54284_fmodules.kt");
}
@Test
@TestMetadata("kt63048.kt")
public void testKt63048() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/kt63048.kt");
}
@Test
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
public void testLeakMemoryWithRunningThreadUnchecked() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/leakMemoryWithRunningThreadUnchecked.kt");
}
@Test
@TestMetadata("toKString.kt")
public void testToKString() throws Exception {
runTest("compiler/testData/codegen/box/cinterop/toKString.kt");
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -31,115 +31,6 @@ public class NativeStandaloneTestGenerated extends AbstractNativeBlackBoxTest {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/testData/standalone"), Pattern.compile("^(.+)\\.kt$"), null, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/testData/standalone"), Pattern.compile("^(.+)\\.kt$"), null, true);
} }
@Nested
@TestMetadata("native/native.tests/testData/standalone/cinterop")
@TestDataPath("$PROJECT_ROOT")
@Tag("standalone")
@EnforcedProperty(property = ClassLevelProperty.TEST_KIND, propertyValue = "STANDALONE_NO_TR")
@UseStandardTestCaseGroupProvider()
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("native/native.tests/testData/standalone/cinterop"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@Test
@TestMetadata("arrayPointers.kt")
public void testArrayPointers() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/arrayPointers.kt");
}
@Test
@TestMetadata("auxiliarySources.kt")
public void testAuxiliarySources() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/auxiliarySources.kt");
}
@Test
@TestMetadata("bitfields.kt")
public void testBitfields() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/bitfields.kt");
}
@Test
@TestMetadata("callbacksAndVarargs.kt")
public void testCallbacksAndVarargs() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/callbacksAndVarargs.kt");
}
@Test
@TestMetadata("enums.kt")
public void testEnums() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/enums.kt");
}
@Test
@TestMetadata("forwardDeclarations.kt")
public void testForwardDeclarations() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/forwardDeclarations.kt");
}
@Test
@TestMetadata("funptr.kt")
public void testFunptr() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/funptr.kt");
}
@Test
@TestMetadata("globals.kt")
public void testGlobals() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/globals.kt");
}
@Test
@TestMetadata("incompleteTypes.kt")
public void testIncompleteTypes() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/incompleteTypes.kt");
}
@Test
@TestMetadata("kt43265.kt")
public void testKt43265() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt43265.kt");
}
@Test
@TestMetadata("kt44283.kt")
public void testKt44283() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt44283.kt");
}
@Test
@TestMetadata("kt54284.kt")
public void testKt54284() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt54284.kt");
}
@Test
@TestMetadata("kt54284_fmodules.kt")
public void testKt54284_fmodules() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt54284_fmodules.kt");
}
@Test
@TestMetadata("kt63048.kt")
public void testKt63048() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/kt63048.kt");
}
@Test
@TestMetadata("leakMemoryWithRunningThreadUnchecked.kt")
public void testLeakMemoryWithRunningThreadUnchecked() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/leakMemoryWithRunningThreadUnchecked.kt");
}
@Test
@TestMetadata("toKString.kt")
public void testToKString() throws Exception {
runTest("native/native.tests/testData/standalone/cinterop/toKString.kt");
}
}
@Nested @Nested
@TestMetadata("native/native.tests/testData/standalone/console") @TestMetadata("native/native.tests/testData/standalone/console")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.DISABLE_N
import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.DISABLE_NATIVE_K1 import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.DISABLE_NATIVE_K1
import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.DISABLE_NATIVE_K2 import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.DISABLE_NATIVE_K2
import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.FILECHECK_STAGE import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.FILECHECK_STAGE
import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.FREE_CINTEROP_ARGS
import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.IGNORE_NATIVE import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.IGNORE_NATIVE
import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.IGNORE_NATIVE_K1 import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.IGNORE_NATIVE_K1
import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.IGNORE_NATIVE_K2 import org.jetbrains.kotlin.konan.test.blackbox.support.TestDirectives.IGNORE_NATIVE_K2
@@ -168,7 +169,9 @@ private class ExtTestDataFile(
testDataFileSettings.languageSettings.sorted().mapTo(args) { "-XXLanguage:$it" } testDataFileSettings.languageSettings.sorted().mapTo(args) { "-XXLanguage:$it" }
testDataFileSettings.optInsForCompiler.sorted().mapTo(args) { "-opt-in=$it" } testDataFileSettings.optInsForCompiler.sorted().mapTo(args) { "-opt-in=$it" }
args += "-opt-in=kotlin.native.internal.InternalForKotlinNativeTests" // for ReflectionPackageName args += "-opt-in=kotlin.native.internal.InternalForKotlinNativeTests" // for ReflectionPackageName
return TestCompilerArgs(args) val freeCInteropArgs = structure.directives.listValues(FREE_CINTEROP_ARGS.name)
?.flatMap { it.split(" ") }
return TestCompilerArgs(args, freeCInteropArgs ?: emptyList())
} }
fun createTestCase(settings: Settings, sharedModules: ThreadSafeCache<String, TestModule.Shared?>): TestCase { fun createTestCase(settings: Settings, sharedModules: ThreadSafeCache<String, TestModule.Shared?>): TestCase {
@@ -250,6 +253,8 @@ private class ExtTestDataFile(
basePackageName.child(oldPackageName) basePackageName.child(oldPackageName)
} }
val packagesOfDefFiles = defFiles.map { Name.identifier(it.name.removeSuffix(".def")) }
filesToTransform.forEach { handler -> filesToTransform.forEach { handler ->
handler.accept(object : KtVisitor<Unit, Set<Name>>() { handler.accept(object : KtVisitor<Unit, Set<Name>>() {
override fun visitKtElement(element: KtElement, parentAccessibleDeclarationNames: Set<Name>) { override fun visitKtElement(element: KtElement, parentAccessibleDeclarationNames: Set<Name>) {
@@ -292,6 +297,8 @@ private class ExtTestDataFile(
|| importedFqName.startsWith(StandardNames.BUILT_INS_PACKAGE_NAME) || importedFqName.startsWith(StandardNames.BUILT_INS_PACKAGE_NAME)
|| importedFqName.startsWith(KOTLINX_PACKAGE_NAME) || importedFqName.startsWith(KOTLINX_PACKAGE_NAME)
|| importedFqName.startsWith(HELPERS_PACKAGE_NAME) || importedFqName.startsWith(HELPERS_PACKAGE_NAME)
|| importedFqName.startsWith(CNAMES_PACKAGE_NAME)
|| packagesOfDefFiles.any { importedFqName.startsWith(it) }
) { ) {
return return
} }
@@ -583,6 +590,7 @@ private class ExtTestDataFile(
private val OPT_IN_ANNOTATION_NAME = Name.identifier("OptIn") private val OPT_IN_ANNOTATION_NAME = Name.identifier("OptIn")
private val HELPERS_PACKAGE_NAME = Name.identifier("helpers") private val HELPERS_PACKAGE_NAME = Name.identifier("helpers")
private val KOTLINX_PACKAGE_NAME = Name.identifier("kotlinx") private val KOTLINX_PACKAGE_NAME = Name.identifier("kotlinx")
private val CNAMES_PACKAGE_NAME = Name.identifier("cnames")
private val MANDATORY_SOURCE_TRANSFORMERS: ExternalSourceTransformers = listOf(DiagnosticsRemovingSourceTransformer) private val MANDATORY_SOURCE_TRANSFORMERS: ExternalSourceTransformers = listOf(DiagnosticsRemovingSourceTransformer)
} }
@@ -611,23 +619,25 @@ private class ExtTestDataFileStructureFactory(parentDisposable: Disposable?) : T
val directives: Directives get() = filesAndModules.directives val directives: Directives get() = filesAndModules.directives
val defFiles: List<KtFile> = filesAndModules.parsedFiles.filter { it.key.name.endsWith(".def") }.map { it.value }
val filesToTransform: Iterable<CurrentFileHandler> val filesToTransform: Iterable<CurrentFileHandler>
get() = filesAndModules.parsedFiles.map { (extTestFile, psiFile) -> get() = filesAndModules.parsedFiles.filter { it.key.name.endsWith(".kt") }
object : CurrentFileHandler { .map { (extTestFile, psiFile) ->
override val packageFqName get() = psiFile.packageFqName object : CurrentFileHandler {
override val module = object : CurrentFileHandler.ModuleHandler { override val packageFqName get() = psiFile.packageFqName
override fun markAsMain() { override val module = object : CurrentFileHandler.ModuleHandler {
extTestFile.module.isMain = true override fun markAsMain() {
extTestFile.module.isMain = true
}
}
override val psiFactory get() = this@ExtTestDataFileStructureFactory.psiFactory
override fun accept(visitor: KtVisitor<*, *>): Unit = psiFile.accept(visitor)
override fun <D> accept(visitor: KtVisitor<*, D>, data: D) {
psiFile.accept(visitor, data)
} }
} }
override val psiFactory get() = this@ExtTestDataFileStructureFactory.psiFactory
override fun accept(visitor: KtVisitor<*, *>): Unit = psiFile.accept(visitor)
override fun <D> accept(visitor: KtVisitor<*, D>, data: D) {
psiFile.accept(visitor, data)
}
} }
}
fun addFileToMainModule(fileName: String, text: String): Unit = filesAndModules.addFileToMainModule(fileName, text) fun addFileToMainModule(fileName: String, text: String): Unit = filesAndModules.addFileToMainModule(fileName, text)
@@ -4566,6 +4566,16 @@ public class FirWasmCodegenBoxTestGenerated extends AbstractFirWasmCodegenBoxTes
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -4566,6 +4566,16 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest
} }
} }
@Nested
@TestMetadata("compiler/testData/codegen/box/cinterop")
@TestDataPath("$PROJECT_ROOT")
public class Cinterop {
@Test
public void testAllFilesPresentInCinterop() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/cinterop"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.WASM, true);
}
}
@Nested @Nested
@TestMetadata("compiler/testData/codegen/box/classLiteral") @TestMetadata("compiler/testData/codegen/box/classLiteral")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")