Added reproducer for https://github.com/JetBrains/kotlin-native/issues/3343
This commit is contained in:
@@ -3374,6 +3374,11 @@ if (PlatformInfo.isAppleTarget(project)) {
|
|||||||
def includePath = file("interop/objc/kt34467").absolutePath
|
def includePath = file("interop/objc/kt34467").absolutePath
|
||||||
it.compilerOpts "-fmodule-map-file=$moduleMap", "-I$includePath"
|
it.compilerOpts "-fmodule-map-file=$moduleMap", "-I$includePath"
|
||||||
}
|
}
|
||||||
|
createInterop("objcGh3343") {
|
||||||
|
it.defFile 'framework/gh3343/objclib.def'
|
||||||
|
it.headers "$projectDir/framework/gh3343/objclib.h"
|
||||||
|
it.linkerOpts "-L$buildDir", "-lobjcgh3343"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createInterop("withSpaces") {
|
createInterop("withSpaces") {
|
||||||
@@ -3876,6 +3881,42 @@ if (isAppleTarget(project)) {
|
|||||||
}
|
}
|
||||||
swiftSources = ['framework/multiple/multiple.swift']
|
swiftSources = ['framework/multiple/multiple.swift']
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task testGh3343Framework(type: FrameworkTest) {
|
||||||
|
final String frameworkName = 'Gh3343'
|
||||||
|
testName = frameworkName
|
||||||
|
frameworkNames = [frameworkName]
|
||||||
|
|
||||||
|
def mainTask = it
|
||||||
|
|
||||||
|
konanArtifacts {
|
||||||
|
def lib = "objcGh3343"
|
||||||
|
def libTask = "compileKonan${lib.capitalize()}${target.name.capitalize()}"
|
||||||
|
UtilsKt.dependsOnDist(project, libTask)
|
||||||
|
UtilsKt.sameDependenciesAs(libTask, mainTask)
|
||||||
|
mainTask.dependsOn(libTask)
|
||||||
|
|
||||||
|
def lnOpts = (project.tasks.getByName(libTask)).linkerOpts
|
||||||
|
|
||||||
|
framework(frameworkName, targets: [ target ]) {
|
||||||
|
libraries {
|
||||||
|
artifact lib
|
||||||
|
}
|
||||||
|
srcDir 'framework/gh3343'
|
||||||
|
baseDir "$testOutputFramework/$testName"
|
||||||
|
|
||||||
|
if (!useCustomDist) {
|
||||||
|
dependsOn ":${target}CrossDistRuntime", ':commonDistRuntime', ':distCompiler'
|
||||||
|
}
|
||||||
|
|
||||||
|
linkerOpts lnOpts
|
||||||
|
extraOpts "-Xembed-bitcode-marker"
|
||||||
|
extraOpts project.globalTestArgs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
swiftSources = ['framework/gh3343/uselib.swift']
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import kotlinx.cinterop.*
|
||||||
|
import objclib.*
|
||||||
|
import kotlin.native.ref.*
|
||||||
|
|
||||||
|
fun run(): List<Any?> {
|
||||||
|
val result = mutableListOf<Any?>()
|
||||||
|
result.add(foo1(42))
|
||||||
|
val list = foo2(117)
|
||||||
|
if (list != null) {
|
||||||
|
result.add(list.size)
|
||||||
|
for (x in list)
|
||||||
|
result.add(x)
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
language = Objective-C
|
||||||
|
headers = Foundation/NSArray.h Foundation/NSValue.h Foundation/NSString.h
|
||||||
|
headerFilter = **/objclib.h Foundation/NSArray.h Foundation/NSValue.h Foundation/NSString.h
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NSString* foo1(int x) {
|
||||||
|
return [NSString stringWithFormat:@"%d", x];
|
||||||
|
}
|
||||||
|
|
||||||
|
NSArray* foo2(int x) {
|
||||||
|
NSValue* xx = @(x);
|
||||||
|
NSString* s = @"zzz";
|
||||||
|
return [NSArray arrayWithObjects: xx, s, nil];
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import Foundation
|
||||||
|
import Gh3343
|
||||||
|
|
||||||
|
func testGh3343() throws {
|
||||||
|
let list = KtlibKt.run()
|
||||||
|
try assertEquals(actual: list[0] as? String, expected: "42")
|
||||||
|
try assertEquals(actual: list[1] as? Int, expected: 2)
|
||||||
|
try assertEquals(actual: list[2] as? Int, expected: 117)
|
||||||
|
try assertEquals(actual: list[3] as? String, expected: "zzz")
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------- Execution of the test --------
|
||||||
|
|
||||||
|
class Gh3343Tests : TestProvider {
|
||||||
|
var tests: [TestCase] = []
|
||||||
|
|
||||||
|
init() {
|
||||||
|
providers.append(self)
|
||||||
|
tests = [
|
||||||
|
TestCase(name: "Gh3343", method: withAutorelease(testGh3343)),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user