From bcd411837152f3546047b8703dbb493dabf0d545 Mon Sep 17 00:00:00 2001 From: SvyatoslavScherbina Date: Tue, 7 May 2019 16:41:57 +0300 Subject: [PATCH] Import only required headers to avoid getting errno or other macros Fix #2945 --- .../konan/objcexport/ObjCExportHeaderGenerator.kt | 8 +++++++- backend.native/tests/framework/values/values.kt | 4 ++++ backend.native/tests/framework/values/values.swift | 11 +++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt index 7f364067146..114d31359e3 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt @@ -708,7 +708,13 @@ abstract class ObjCExportHeaderGenerator internal constructor( private val topLevel = mutableMapOf>() fun build(): List = mutableListOf().apply { - add("#import ") + add("#import ") + add("#import ") + add("#import ") + add("#import ") + add("#import ") + add("#import ") + add("#import ") add("") if (classForwardDeclarations.isNotEmpty()) { diff --git a/backend.native/tests/framework/values/values.kt b/backend.native/tests/framework/values/values.kt index c3c648cddd4..70f553ffb11 100644 --- a/backend.native/tests/framework/values/values.kt +++ b/backend.native/tests/framework/values/values.kt @@ -350,4 +350,8 @@ class GH2931 { freeze() } } +} + +class GH2945(var errno: Int) { + fun testErrnoInSelector(p: Int, errno: Int) = p + errno } \ No newline at end of file diff --git a/backend.native/tests/framework/values/values.swift b/backend.native/tests/framework/values/values.swift index f7dc2dc1a14..dd9d4faca28 100644 --- a/backend.native/tests/framework/values/values.swift +++ b/backend.native/tests/framework/values/values.swift @@ -526,6 +526,16 @@ func testKotlinOverride() throws { try assertEquals(actual: TransformIntToLongCallingSuper().map(value: 5), expected: 5) } +// See https://github.com/JetBrains/kotlin-native/issues/2945 +func testGH2945() throws { + let gh2945 = GH2945(errno: 1) + try assertEquals(actual: 1, expected: gh2945.errno) + gh2945.errno = 2 + try assertEquals(actual: 2, expected: gh2945.errno) + + try assertEquals(actual: 7, expected: gh2945.testErrnoInSelector(p: 3, errno: 4)) +} + // See https://github.com/JetBrains/kotlin-native/issues/2931 func testGH2931() throws { for i in 0..<50000 { @@ -586,6 +596,7 @@ class ValuesTests : TestProvider { TestCase(name: "TestNames", method: withAutorelease(testNames)), TestCase(name: "TestSwiftOverride", method: withAutorelease(testSwiftOverride)), TestCase(name: "TestKotlinOverride", method: withAutorelease(testKotlinOverride)), + TestCase(name: "TestGH2945", method: withAutorelease(testGH2945)), TestCase(name: "TestGH2931", method: withAutorelease(testGH2931)), ] }