[K/N] Add backend.native test for objcClassesIncludingCategories
This commit is contained in:
committed by
Space Team
parent
4ffb43c5bd
commit
3ade4fbedc
@@ -4458,6 +4458,10 @@ if (PlatformInfo.isAppleTarget(project)) {
|
|||||||
it.defFile 'interop/objc/kt49034/objcprotocol/kt49034.def'
|
it.defFile 'interop/objc/kt49034/objcprotocol/kt49034.def'
|
||||||
it.headers "$projectDir/interop/objc/kt49034/objcprotocol/kt49034.h"
|
it.headers "$projectDir/interop/objc/kt49034/objcprotocol/kt49034.h"
|
||||||
}
|
}
|
||||||
|
createInterop("objc_include_categories") {
|
||||||
|
it.defFile 'interop/objc/include_categories/objc_include_categories.def'
|
||||||
|
it.headers "$projectDir/interop/objc/include_categories/objc_include_categories.h"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createInterop("withSpaces") {
|
createInterop("withSpaces") {
|
||||||
@@ -5205,6 +5209,23 @@ if (PlatformInfo.isAppleTarget(project)) {
|
|||||||
useGoldenData = true
|
useGoldenData = true
|
||||||
flags = ["-native-library", "$buildDir/objc_arc_contract.bc"]
|
flags = ["-native-library", "$buildDir/objc_arc_contract.bc"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interopTest("interop_objc_include_categories") {
|
||||||
|
useGoldenData = true
|
||||||
|
source = "interop/objc/include_categories/main.kt"
|
||||||
|
interop = "objc_include_categories"
|
||||||
|
doBeforeBuild {
|
||||||
|
mkdir(buildDir)
|
||||||
|
project.extensions.execClang.execClangForCompilerTests(project.target) {
|
||||||
|
args "$projectDir/interop/objc/include_categories/objc_include_categories.m"
|
||||||
|
args "-lobjc", '-fobjc-arc'
|
||||||
|
args '-fPIC', '-shared', '-o', "$buildDir/libobjcincludecategories.dylib"
|
||||||
|
}
|
||||||
|
if (UtilsKt.isSimulatorTarget(project, project.target)) {
|
||||||
|
UtilsKt.codesign(project, "$buildDir/libobjcincludecategories.dylib")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register("KT-50983", KonanDriverTest) {
|
tasks.register("KT-50983", KonanDriverTest) {
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
import objc_include_categories.*
|
||||||
|
|
||||||
|
class KotlinDerived : BaseClass() {
|
||||||
|
override fun multiplyBy(value: Int): Float {
|
||||||
|
return this.floatProperty * value * 100
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val base = BaseClass()
|
||||||
|
println(base.floatProperty)
|
||||||
|
val base2 = BaseClass(float = 3.14f)
|
||||||
|
println(base2.floatProperty)
|
||||||
|
println(base.multiplyBy(2))
|
||||||
|
println()
|
||||||
|
val derived = DerivedClass()
|
||||||
|
println(derived.intProperty)
|
||||||
|
val derived2 = DerivedClass(int = 6)
|
||||||
|
println(derived2.intProperty)
|
||||||
|
println(derived.multiplyBy(2))
|
||||||
|
println()
|
||||||
|
val kotlinDerived = KotlinDerived()
|
||||||
|
println(kotlinDerived.floatProperty)
|
||||||
|
println(kotlinDerived.multiplyBy(2))
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
3.0
|
||||||
|
3.14
|
||||||
|
6.0
|
||||||
|
|
||||||
|
3
|
||||||
|
6
|
||||||
|
6.0
|
||||||
|
|
||||||
|
3.0
|
||||||
|
600.0
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
language = Objective-C
|
||||||
|
headerFilter = **/objc_include_categories.h
|
||||||
|
linkerOpts = -lobjcincludecategories
|
||||||
|
objcClassesIncludingCategories = BaseClass DerivedClass
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
#import <objc/NSObject.h>
|
||||||
|
|
||||||
|
@interface BaseClass : NSObject
|
||||||
|
- (id) init;
|
||||||
|
@property float floatProperty;
|
||||||
|
@end;
|
||||||
|
|
||||||
|
@interface BaseClass(IncludeCategory)
|
||||||
|
- (id)initWithFloat:(float)number;
|
||||||
|
- (float) multiplyBy:(int)value;
|
||||||
|
@end;
|
||||||
|
|
||||||
|
@interface DerivedClass : BaseClass
|
||||||
|
- (id) init;
|
||||||
|
@property int intProperty;
|
||||||
|
@end;
|
||||||
|
|
||||||
|
@interface DerivedClass(IncludeCategory)
|
||||||
|
- (id)initWithInt:(int)number;
|
||||||
|
@end;
|
||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
#include "objc_include_categories.h"
|
||||||
|
|
||||||
|
@implementation BaseClass
|
||||||
|
-(id) init {
|
||||||
|
self.floatProperty = 3.0f;
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
@end;
|
||||||
|
|
||||||
|
@implementation BaseClass(IncludeCategory)
|
||||||
|
- (id)initWithFloat:(float)number {
|
||||||
|
self.floatProperty = number;
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
- (float) multiplyBy:(int)number {
|
||||||
|
return self.floatProperty * 2;
|
||||||
|
}
|
||||||
|
@end;
|
||||||
|
|
||||||
|
@implementation DerivedClass
|
||||||
|
-(id) init {
|
||||||
|
self = [super init];
|
||||||
|
self.intProperty = 3;
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
@end;
|
||||||
|
|
||||||
|
@implementation DerivedClass(IncludeCategory)
|
||||||
|
- (id)initWithInt:(int)number {
|
||||||
|
self = [self init];
|
||||||
|
self.intProperty = number;
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
@end;
|
||||||
Reference in New Issue
Block a user