[TEST][compilation] validness of DI for global variable for interop with ObjC

This commit is contained in:
Vasily Levchenko
2019-07-30 18:59:40 +03:00
parent bf3a47f0d3
commit 8ad8529611
5 changed files with 69 additions and 0 deletions
+27
View File
@@ -3253,6 +3253,12 @@ if (PlatformInfo.isAppleTarget(project)) {
it.headers "$projectDir/interop/objc/smoke.h"
it.linkerOpts "-L$buildDir", "-lobjcsmoke"
}
createInterop("objcMisc") {
it.defFile 'interop/objc_with_initializer/objc_misc.def'
it.headers "$projectDir/interop/objc_with_initializer/objc_misc.h"
it.linkerOpts "-L$buildDir", "-lobjcmisc"
}
}
createInterop("withSpaces") {
@@ -3442,6 +3448,27 @@ interopTest("interop_objc_smoke") {
}
}
interopTest("interop_objc_global_initializer") {
disabled = !isAppleTarget(project)
goldValue = "OK\n"
source = "interop/objc_with_initializer/objc_test.kt"
interop = 'objcMisc'
flags = ['-g']
doBefore {
execKonanClang(project.target) {
args "$projectDir/interop/objc_with_initializer/objc_misc.m"
args "-lobjc", '-fobjc-arc'
args '-fPIC', '-shared', '-o', "$buildDir/libobjcmisc.dylib"
}
if (project.target instanceof KonanTarget.IOS_X64) {
UtilsKt.codesign(project, "$buildDir/libobjcmisc.dylib")
}
}
}
standaloneTest("jsinterop_math") {
doBefore {
def jsinteropScript = isWindows() ? "jsinterop.bat" : "jsinterop"
@@ -0,0 +1,4 @@
language = Objective-C
headers = Foundation/NSArray.h Foundation/NSValue.h Foundation/NSString.h
headerFilter = **/objc_misc.h Foundation/NSArray.h Foundation/NSValue.h Foundation/NSString.h
@@ -0,0 +1,11 @@
#include <Foundation/NSObject.h>
@interface A:NSObject
@end
@interface B:A
+(A*)giveC;
@end
@interface C:A
@end
@@ -0,0 +1,20 @@
#import <Foundation/Foundation.h>
#include "objc_misc.h"
@implementation A
@end
@implementation B:A
+(A*)giveC{
return [[C alloc] init];
}
@end
@implementation C:A
@end
#if 0
int main() {
[B giveC];
}
#endif
@@ -0,0 +1,7 @@
import objc_misc.*
val a = B.giveC()!! as C
fun main() {
println("OK")
}