diff --git a/kotlin-native/backend.native/tests/interop/forwardDeclarationsTwoLibs/forwardDeclarationsTwoLibs.kt b/kotlin-native/backend.native/tests/interop/forwardDeclarationsTwoLibs/forwardDeclarationsTwoLibs.kt index f30119aa429..814e38a1cfb 100644 --- a/kotlin-native/backend.native/tests/interop/forwardDeclarationsTwoLibs/forwardDeclarationsTwoLibs.kt +++ b/kotlin-native/backend.native/tests/interop/forwardDeclarationsTwoLibs/forwardDeclarationsTwoLibs.kt @@ -2,12 +2,13 @@ import cForwardDeclarationsTwoLibs1.* import cForwardDeclarationsTwoLibs2.* - -// Note: there are no practical cases for this type, but it works in K1 so better to have a test for this. -import cnames.structs.StructUndeclaredUndeclared +import cnames.structs.StructUndeclaredDeclared +import cnames.structs.StructDeclaredUndeclared +import cnames.structs.StructDeclaredDeclared import kotlin.test.assertEquals import kotlinx.cinterop.COpaque +import kotlinx.cinterop.CPointed import kotlinx.cinterop.CStructVar import kotlinx.cinterop.ptr // The test should also check that these references can't be resolved, but the test infra doesn't support this yet: @@ -17,15 +18,11 @@ import kotlinx.cinterop.ptr // import cForwardDeclarationsTwoLibs2.StructUndeclaredUndeclared // import cForwardDeclarationsTwoLibs2.StructDeclaredUndeclared // import cForwardDeclarationsTwoLibs2.StructDefinedUndeclared +// import cnames.structs.StructUndeclaredUndeclared // Supported in K1 though. fun checkSubtype2() {} -fun checkSubtype3() {} -fun checkSubtype4() {} -fun checkSubtype5() {} -fun checkSubtype6() {} // Here we rely on frontend reporting conflicting overloads if some of these types turn out to be the same. -fun checkDifferentTypes(s: StructUndeclaredUndeclared?) = 0 fun checkDifferentTypes(s: StructUndeclaredDeclared?) = 1 fun checkDifferentTypes(s: StructUndeclaredDefined?) = 2 fun checkDifferentTypes(s: StructDeclaredUndeclared?) = 3 @@ -37,85 +34,37 @@ fun checkDifferentTypes(s: cForwardDeclarationsTwoLibs1.StructDefinedDefined?) = fun checkDifferentTypes(s: cForwardDeclarationsTwoLibs2.StructDefinedDefined?) = 9 fun main() { - // Checking it is the same type: - checkSubtype3() - checkSubtype2() - - checkSubtype4< - StructUndeclaredDeclared, - cnames.structs.StructUndeclaredDeclared, - cForwardDeclarationsTwoLibs2.StructUndeclaredDeclared, - StructUndeclaredDeclared, - >() checkSubtype2() - checkSubtype4< - StructUndeclaredDefined, - cnames.structs.StructUndeclaredDefined, - cForwardDeclarationsTwoLibs2.StructUndeclaredDefined, - StructUndeclaredDefined - >() checkSubtype2() - checkSubtype4< - StructDeclaredUndeclared, - cnames.structs.StructDeclaredUndeclared, - cForwardDeclarationsTwoLibs1.StructDeclaredUndeclared, - StructDeclaredUndeclared - >() checkSubtype2() - checkSubtype5< - StructDeclaredDeclared, - cnames.structs.StructDeclaredDeclared, - cForwardDeclarationsTwoLibs1.StructDeclaredDeclared, - cForwardDeclarationsTwoLibs2.StructDeclaredDeclared, - StructDeclaredDeclared - >() checkSubtype2() - checkSubtype5< - StructDeclaredDefined, - cnames.structs.StructDeclaredDefined, - cForwardDeclarationsTwoLibs1.StructDeclaredDefined, - cForwardDeclarationsTwoLibs2.StructDeclaredDefined, - StructDeclaredDefined - >() + checkSubtype2() checkSubtype2() - checkSubtype4< - StructDefinedUndeclared, - cnames.structs.StructDefinedUndeclared, - cForwardDeclarationsTwoLibs1.StructDefinedUndeclared, - StructDefinedUndeclared - >() checkSubtype2() - checkSubtype5< - StructDefinedDeclared, - cnames.structs.StructDefinedDeclared, - cForwardDeclarationsTwoLibs1.StructDefinedDeclared, - cForwardDeclarationsTwoLibs2.StructDefinedDeclared, - StructDefinedDeclared - >() + checkSubtype2() checkSubtype2() - checkSubtype2() checkSubtype2() checkSubtype2() - val undeclaredUndeclared: StructUndeclaredUndeclared? = null val undeclaredDeclared: StructUndeclaredDeclared? = null val undeclaredDefined: StructUndeclaredDefined? = null val declaredUndeclared: StructDeclaredUndeclared? = null val declaredDeclared: StructDeclaredDeclared? = null + val cnamesDeclaredDefined: cnames.structs.StructDeclaredDefined? = null val declaredDefined: StructDeclaredDefined? = null val definedUndeclared: StructDefinedUndeclared? = null + val cnamesDefinedDeclared: cnames.structs.StructDefinedDeclared? = null val definedDeclared: StructDefinedDeclared? = null val definedDefined1: cForwardDeclarationsTwoLibs1.StructDefinedDefined? = null val definedDefined2: cForwardDeclarationsTwoLibs2.StructDefinedDefined? = null - assertEquals(0, checkDifferentTypes(undeclaredUndeclared)) assertEquals(1, checkDifferentTypes(undeclaredDeclared)) assertEquals(2, checkDifferentTypes(undeclaredDefined)) assertEquals(3, checkDifferentTypes(declaredUndeclared)) @@ -131,11 +80,11 @@ fun main() { assertEquals(-3, use1StructDeclaredUndeclared(declaredUndeclared?.ptr)) assertEquals(-4, use1StructDeclaredDeclared(declaredDeclared?.ptr)) assertEquals(4, use2StructDeclaredDeclared(declaredDeclared?.ptr)) - assertEquals(-5, use1StructDeclaredDefined(declaredDefined?.ptr)) + assertEquals(-5, use1StructDeclaredDefined(cnamesDeclaredDefined?.ptr)) assertEquals(5, use2StructDeclaredDefined(declaredDefined?.ptr)) assertEquals(-6, use1StructDefinedUndeclared(definedUndeclared?.ptr)) assertEquals(-7, use1StructDefinedDeclared(definedDeclared?.ptr)) - assertEquals(7, use2StructDefinedDeclared(definedDeclared?.ptr)) + assertEquals(7, use2StructDefinedDeclared(cnamesDefinedDeclared?.ptr)) assertEquals(-8, use1StructDefinedDefined(definedDefined1?.ptr)) assertEquals(8, use2StructDefinedDefined(definedDefined2?.ptr)) }