[K/N] Add ObjCName annotation (#4815)

This commit is contained in:
Rick Clephas
2022-07-23 18:58:06 +02:00
committed by GitHub
parent edf9e05b13
commit 5a5e6ad8cd
22 changed files with 1372 additions and 78 deletions
@@ -1212,6 +1212,132 @@ __attribute__((swift_name("NoAutoreleaseKt")))
+ (void)useIntArrayArray:(KtKotlinIntArray *)array __attribute__((swift_name("useIntArray(array:)")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameC1A")))
@interface KtObjCNameC1A : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (NSString *)foo __attribute__((swift_name("foo()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameAKt")))
@interface KtObjCNameAKt : KtBase
+ (NSString *)withUserId:(NSString *)userId __attribute__((swift_name("with(userId:)")));
+ (BOOL)supportsFeatures:(BOOL)features __attribute__((swift_name("supports(_:)")));
+ (NSString *)scanForPeripheralsWithServices:(int32_t)serviceUUIDs options:(NSString *)options __attribute__((swift_name("scanForPeripherals(withServices:options:)")));
+ (NSString *)registerForConnectionEventsWithOptions:(NSString *)options __attribute__((swift_name("registerForConnectionEvents(options:)")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameC1B")))
@interface KtObjCNameC1B : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (NSString *)foo __attribute__((swift_name("foo()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("MySwiftArray")))
@interface KtMyObjCArray : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (int32_t)indexOfObject:(int32_t)element __attribute__((swift_name("index(of:)")));
@property (readonly) int32_t count __attribute__((swift_name("count")));
@end
__attribute__((swift_name("ObjCNameI1")))
@protocol KtObjCNameI1
@required
- (int32_t)someOtherFunctionReceiver:(int32_t)receiver otherParam:(int32_t)param __attribute__((swift_name("someOtherFunction(receiver:otherParam:)")));
@property (readonly) int32_t someOtherValue __attribute__((swift_name("someOtherValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC2")))
@interface KtObjCNameC2 : KtBase <KtObjCNameI1>
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (int32_t)someOtherFunctionReceiver:(int32_t)receiver otherParam:(int32_t)param __attribute__((swift_name("someOtherFunction(receiver:otherParam:)")));
@property int32_t someOtherValue __attribute__((swift_name("someOtherValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC2.SwiftNestedClass")))
@interface KtObjCNameC2ObjCNestedClass : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@property int32_t nestedValue __attribute__((swift_name("nestedValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftExactNestedClass")))
@interface ObjCExactNestedClass : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@property int32_t nestedValue __attribute__((swift_name("nestedValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC3")))
@interface ObjCNameC3 : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC3.SwiftNestedClass")))
@interface ObjCNameC3ObjCNestedClass : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@property int32_t nestedValue __attribute__((swift_name("nestedValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameC4")))
@interface KtObjCNameC4 : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (int32_t)fooObjCReceiver:(int32_t)receiver objCParam:(int32_t)param __attribute__((swift_name("foo(objCReceiver:objCParam:)")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameSwiftObject")))
@interface KtObjCNameObjCObject : KtBase
+ (instancetype)alloc __attribute__((unavailable));
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
+ (instancetype)objCNameObjCObject __attribute__((swift_name("init()")));
@property (class, readonly, getter=shared) KtObjCNameObjCObject *shared __attribute__((swift_name("shared")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameSwiftEnum")))
@interface KtObjCNameObjCEnum : KtKotlinEnum<KtObjCNameObjCEnum *>
+ (instancetype)alloc __attribute__((unavailable));
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
@property (class, readonly) KtObjCNameObjCEnum *objcOne __attribute__((swift_name("swiftOne")));
@property (class, readonly) KtObjCNameObjCEnum *objcTwo __attribute__((swift_name("companion")));
@property (class, readonly) KtObjCNameObjCEnum *objcThree __attribute__((swift_name("swiftThree")));
+ (KtKotlinArray<KtObjCNameObjCEnum *> *)values __attribute__((swift_name("values()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameSwiftEnum.Companion")))
@interface KtObjCNameObjCEnumCompanion : KtBase
+ (instancetype)alloc __attribute__((unavailable));
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
+ (instancetype)companion __attribute__((swift_name("init()")));
@property (class, readonly, getter=shared) KtObjCNameObjCEnumCompanion *shared __attribute__((swift_name("shared")));
- (int32_t)foo __attribute__((swift_name("foo()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameBKt")))
@interface KtObjCNameBKt : KtBase
+ (int32_t)getSomeValueOf:(id<KtObjCNameI1>)receiver __attribute__((swift_name("getSomeValue(of:)")));
@end
__attribute__((swift_name("OverrideKotlinMethods2")))
@protocol KtOverrideKotlinMethods2
@required
@@ -1147,6 +1147,132 @@ __attribute__((swift_name("NoAutoreleaseKt")))
+ (void)useIntArrayArray:(KtKotlinIntArray *)array __attribute__((swift_name("useIntArray(array:)")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameC1A")))
@interface KtObjCNameC1A : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (NSString *)foo __attribute__((swift_name("foo()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameAKt")))
@interface KtObjCNameAKt : KtBase
+ (NSString *)withUserId:(NSString *)userId __attribute__((swift_name("with(userId:)")));
+ (BOOL)supportsFeatures:(BOOL)features __attribute__((swift_name("supports(_:)")));
+ (NSString *)scanForPeripheralsWithServices:(int32_t)serviceUUIDs options:(NSString *)options __attribute__((swift_name("scanForPeripherals(withServices:options:)")));
+ (NSString *)registerForConnectionEventsWithOptions:(NSString *)options __attribute__((swift_name("registerForConnectionEvents(options:)")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameC1B")))
@interface KtObjCNameC1B : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (NSString *)foo __attribute__((swift_name("foo()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("MySwiftArray")))
@interface KtMyObjCArray : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (int32_t)indexOfObject:(int32_t)element __attribute__((swift_name("index(of:)")));
@property (readonly) int32_t count __attribute__((swift_name("count")));
@end
__attribute__((swift_name("ObjCNameI1")))
@protocol KtObjCNameI1
@required
- (int32_t)someOtherFunctionReceiver:(int32_t)receiver otherParam:(int32_t)param __attribute__((swift_name("someOtherFunction(receiver:otherParam:)")));
@property (readonly) int32_t someOtherValue __attribute__((swift_name("someOtherValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC2")))
@interface KtObjCNameC2 : KtBase <KtObjCNameI1>
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (int32_t)someOtherFunctionReceiver:(int32_t)receiver otherParam:(int32_t)param __attribute__((swift_name("someOtherFunction(receiver:otherParam:)")));
@property int32_t someOtherValue __attribute__((swift_name("someOtherValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC2.SwiftNestedClass")))
@interface KtObjCNameC2ObjCNestedClass : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@property int32_t nestedValue __attribute__((swift_name("nestedValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftExactNestedClass")))
@interface ObjCExactNestedClass : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@property int32_t nestedValue __attribute__((swift_name("nestedValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC3")))
@interface ObjCNameC3 : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC3.SwiftNestedClass")))
@interface ObjCNameC3ObjCNestedClass : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@property int32_t nestedValue __attribute__((swift_name("nestedValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameC4")))
@interface KtObjCNameC4 : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (int32_t)fooObjCReceiver:(int32_t)receiver objCParam:(int32_t)param __attribute__((swift_name("foo(objCReceiver:objCParam:)")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameSwiftObject")))
@interface KtObjCNameObjCObject : KtBase
+ (instancetype)alloc __attribute__((unavailable));
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
+ (instancetype)objCNameObjCObject __attribute__((swift_name("init()")));
@property (class, readonly, getter=shared) KtObjCNameObjCObject *shared __attribute__((swift_name("shared")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameSwiftEnum")))
@interface KtObjCNameObjCEnum : KtKotlinEnum<KtObjCNameObjCEnum *>
+ (instancetype)alloc __attribute__((unavailable));
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
@property (class, readonly) KtObjCNameObjCEnum *objcOne __attribute__((swift_name("swiftOne")));
@property (class, readonly) KtObjCNameObjCEnum *objcTwo __attribute__((swift_name("companion")));
@property (class, readonly) KtObjCNameObjCEnum *objcThree __attribute__((swift_name("swiftThree")));
+ (KtKotlinArray<KtObjCNameObjCEnum *> *)values __attribute__((swift_name("values()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameSwiftEnum.Companion")))
@interface KtObjCNameObjCEnumCompanion : KtBase
+ (instancetype)alloc __attribute__((unavailable));
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
+ (instancetype)companion __attribute__((swift_name("init()")));
@property (class, readonly, getter=shared) KtObjCNameObjCEnumCompanion *shared __attribute__((swift_name("shared")));
- (int32_t)foo __attribute__((swift_name("foo()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameBKt")))
@interface KtObjCNameBKt : KtBase
+ (int32_t)getSomeValueOf:(id<KtObjCNameI1>)receiver __attribute__((swift_name("getSomeValue(of:)")));
@end
__attribute__((swift_name("OverrideKotlinMethods2")))
@protocol KtOverrideKotlinMethods2
@required
@@ -1147,6 +1147,132 @@ __attribute__((swift_name("NoAutoreleaseKt")))
+ (void)useIntArrayArray:(KtKotlinIntArray *)array __attribute__((swift_name("useIntArray(array:)")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameC1A")))
@interface KtObjCNameC1A : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (NSString *)foo __attribute__((swift_name("foo()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameAKt")))
@interface KtObjCNameAKt : KtBase
+ (NSString *)withUserId:(NSString *)userId __attribute__((swift_name("with(userId:)")));
+ (BOOL)supportsFeatures:(BOOL)features __attribute__((swift_name("supports(_:)")));
+ (NSString *)scanForPeripheralsWithServices:(int32_t)serviceUUIDs options:(NSString *)options __attribute__((swift_name("scanForPeripherals(withServices:options:)")));
+ (NSString *)registerForConnectionEventsWithOptions:(NSString *)options __attribute__((swift_name("registerForConnectionEvents(options:)")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameC1B")))
@interface KtObjCNameC1B : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (NSString *)foo __attribute__((swift_name("foo()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("MySwiftArray")))
@interface KtMyObjCArray : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (int32_t)indexOfObject:(int32_t)element __attribute__((swift_name("index(of:)")));
@property (readonly) int32_t count __attribute__((swift_name("count")));
@end
__attribute__((swift_name("ObjCNameI1")))
@protocol KtObjCNameI1
@required
- (int32_t)someOtherFunctionReceiver:(int32_t)receiver otherParam:(int32_t)param __attribute__((swift_name("someOtherFunction(receiver:otherParam:)")));
@property (readonly) int32_t someOtherValue __attribute__((swift_name("someOtherValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC2")))
@interface KtObjCNameC2 : KtBase <KtObjCNameI1>
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (int32_t)someOtherFunctionReceiver:(int32_t)receiver otherParam:(int32_t)param __attribute__((swift_name("someOtherFunction(receiver:otherParam:)")));
@property int32_t someOtherValue __attribute__((swift_name("someOtherValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC2.SwiftNestedClass")))
@interface KtObjCNameC2ObjCNestedClass : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@property int32_t nestedValue __attribute__((swift_name("nestedValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftExactNestedClass")))
@interface ObjCExactNestedClass : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@property int32_t nestedValue __attribute__((swift_name("nestedValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC3")))
@interface ObjCNameC3 : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("SwiftNameC3.SwiftNestedClass")))
@interface ObjCNameC3ObjCNestedClass : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
@property int32_t nestedValue __attribute__((swift_name("nestedValue")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameC4")))
@interface KtObjCNameC4 : KtBase
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
- (int32_t)fooObjCReceiver:(int32_t)receiver objCParam:(int32_t)param __attribute__((swift_name("foo(objCReceiver:objCParam:)")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameSwiftObject")))
@interface KtObjCNameObjCObject : KtBase
+ (instancetype)alloc __attribute__((unavailable));
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
+ (instancetype)objCNameObjCObject __attribute__((swift_name("init()")));
@property (class, readonly, getter=shared) KtObjCNameObjCObject *shared __attribute__((swift_name("shared")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameSwiftEnum")))
@interface KtObjCNameObjCEnum : KtKotlinEnum
+ (instancetype)alloc __attribute__((unavailable));
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
- (instancetype)initWithName:(NSString *)name ordinal:(int32_t)ordinal __attribute__((swift_name("init(name:ordinal:)"))) __attribute__((objc_designated_initializer)) __attribute__((unavailable));
@property (class, readonly) KtObjCNameObjCEnum *objcOne __attribute__((swift_name("swiftOne")));
@property (class, readonly) KtObjCNameObjCEnum *objcTwo __attribute__((swift_name("companion")));
@property (class, readonly) KtObjCNameObjCEnum *objcThree __attribute__((swift_name("swiftThree")));
+ (KtKotlinArray *)values __attribute__((swift_name("values()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameSwiftEnum.Companion")))
@interface KtObjCNameObjCEnumCompanion : KtBase
+ (instancetype)alloc __attribute__((unavailable));
+ (instancetype)allocWithZone:(struct _NSZone *)zone __attribute__((unavailable));
+ (instancetype)companion __attribute__((swift_name("init()")));
@property (class, readonly, getter=shared) KtObjCNameObjCEnumCompanion *shared __attribute__((swift_name("shared")));
- (int32_t)foo __attribute__((swift_name("foo()")));
@end
__attribute__((objc_subclassing_restricted))
__attribute__((swift_name("ObjCNameBKt")))
@interface KtObjCNameBKt : KtBase
+ (int32_t)getSomeValueOf:(id<KtObjCNameI1>)receiver __attribute__((swift_name("getSomeValue(of:)")));
@end
__attribute__((swift_name("OverrideKotlinMethods2")))
@protocol KtOverrideKotlinMethods2
@required
@@ -0,0 +1,78 @@
import Kt
private func testObjCNameClassNames() throws {
try assertEquals(actual: ObjCNameC1A().foo(), expected: "a")
try assertEquals(actual: ObjCNameC1B().foo(), expected: "b")
}
private func testObjCNameFunctionName() throws {
try assertEquals(actual: ObjCNameAKt.with(userId: "abc"), expected: "abc")
}
private func testObjCNameParameterNames() throws {
try assertEquals(actual: ObjCNameAKt.supports(true), expected: true)
try assertEquals(actual: ObjCNameAKt.scanForPeripherals(withServices: 123, options: "abc"), expected: "123 abc")
try assertEquals(actual: ObjCNameAKt.registerForConnectionEvents(options: "abc"), expected: "abc")
}
private func testObjCNameReceiverName() throws {
let object = SwiftNameC2()
try assertEquals(actual: ObjCNameBKt.getSomeValue(of: object), expected: 0)
}
private func testObjCNameMySwiftArray() throws {
let array = MySwiftArray()
try assertEquals(actual: array.count, expected: 0)
try assertEquals(actual: array.index(of: 1), expected: 1)
}
private func testObjCNameOverrides() throws {
let object = SwiftNameC2()
try assertEquals(actual: object.someOtherValue, expected: 0)
object.someOtherValue = 1
try assertEquals(actual: object.someOtherValue, expected: 1)
try assertEquals(actual: object.someOtherFunction(receiver: 2, otherParam: 4), expected: 8)
try assertEquals(actual: ObjCNameC4().foo(objCReceiver: 3, objCParam: 5), expected: 15)
}
private func testObjCNameNestedClass() throws {
let object = SwiftNameC2.SwiftNestedClass()
try assertEquals(actual: object.nestedValue, expected: 1)
object.nestedValue = 2
try assertEquals(actual: object.nestedValue, expected: 2)
}
private func testObjCNameExact() throws {
try assertEquals(actual: SwiftExactNestedClass().nestedValue, expected: 1)
try assertEquals(actual: SwiftNameC3.SwiftNestedClass().nestedValue, expected: 2)
}
private func testObjCNameObject() throws {
try assertEquals(actual: ObjCNameSwiftObject.shared, expected: ObjCNameSwiftObject())
}
private func testObjCNameEnum() throws {
let enumValues = ObjCNameSwiftEnum.values()
try assertEquals(actual: enumValues.size, expected: 3)
try assertSame(actual: enumValues.get(index: 0) as AnyObject, expected: ObjCNameSwiftEnum.swiftOne)
try assertSame(actual: enumValues.get(index: 1) as AnyObject, expected: ObjCNameSwiftEnum.companion)
try assertSame(actual: enumValues.get(index: 2) as AnyObject, expected: ObjCNameSwiftEnum.swiftThree)
try assertEquals(actual: ObjCNameSwiftEnum.Companion.shared.foo(), expected: 0)
}
class ObjCNameTests : SimpleTestProvider {
override init() {
super.init()
test("TestObjCNameClassNames", testObjCNameClassNames)
test("TestObjCNameFunctionName", testObjCNameFunctionName)
test("TestObjCNameParameterNames", testObjCNameParameterNames)
test("TestObjCNameReceiverName", testObjCNameReceiverName)
test("TestObjCNameMySwiftArray", testObjCNameMySwiftArray)
test("TestObjCNameOverrides", testObjCNameOverrides)
test("TestObjCNameNestedClass", testObjCNameNestedClass)
test("TestObjCNameExact", testObjCNameExact)
test("TestObjCNameObject", testObjCNameObject)
test("TestObjCNameEnum", testObjCNameEnum)
}
}
@@ -0,0 +1,29 @@
/*
* Copyright 2010-2022 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.
*/
@file:OptIn(ExperimentalObjCName::class)
package objCNameA
import kotlin.experimental.ExperimentalObjCName
// https://youtrack.jetbrains.com/issue/KT-50767
@ObjCName("ObjCNameC1A")
class ObjCNameC1 {
fun foo(): String = "a"
}
// https://youtrack.jetbrains.com/issue/KT-48076
@ObjCName("with")
fun withUserId(userId: String): String = userId
// https://developer.apple.com/documentation/corebluetooth/cbcentralmanager/3240586-supports
fun supports(@ObjCName(swiftName = "_") features: Boolean): Boolean = features
// https://developer.apple.com/documentation/corebluetooth/cbcentralmanager/1518986-scanforperipherals
fun scanForPeripherals(@ObjCName("withServices") serviceUUIDs: Int, options: String): String = "$serviceUUIDs $options"
// https://developer.apple.com/documentation/corebluetooth/cbcentralmanager/3174844-registerforconnectionevents
fun registerForConnectionEvents(@ObjCName("withOptions", "options") options: String): String = "$options"
@@ -0,0 +1,84 @@
/*
* Copyright 2010-2022 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.
*/
@file:OptIn(ExperimentalObjCName::class)
package objCNameB
import kotlin.experimental.ExperimentalObjCName
// https://youtrack.jetbrains.com/issue/KT-50767
@ObjCName("ObjCNameC1B")
class ObjCNameC1 {
fun foo(): String = "b"
}
@ObjCName("MyObjCArray", "MySwiftArray")
class MyKotlinArray {
// https://developer.apple.com/documentation/foundation/nsarray/1409982-count
@ObjCName("count")
val size: Int = 0
// https://developer.apple.com/documentation/foundation/nsarray/1417076-index
@ObjCName(swiftName = "index")
fun indexOf(@ObjCName("object", "of") element: Int): Int = element
}
interface ObjCNameI1 {
@ObjCName("someOtherValue")
val someValue: Int
@ObjCName("someOtherFunction")
fun @receiver:ObjCName("receiver") Int.someFunction(@ObjCName("otherParam") param: Int): Int
}
fun @receiver:ObjCName("of") ObjCNameI1.getSomeValue(): Int = someValue
@ObjCName(swiftName = "SwiftNameC2")
class ObjCNameC2: ObjCNameI1 {
@ObjCName("ObjCNestedClass", "SwiftNestedClass")
class NestedClass {
var nestedValue: Int = 1
}
@ObjCName("ObjCExactNestedClass", "SwiftExactNestedClass", true)
class ExactNestedClass {
var nestedValue: Int = 1
}
override var someValue: Int = 0
override fun Int.someFunction(param: Int): Int = this * param
}
@ObjCName("ObjCNameC3", "SwiftNameC3", true)
class ObjCNameC3 {
@ObjCName("ObjCNestedClass", "SwiftNestedClass")
class NestedClass {
var nestedValue: Int = 2
}
}
private interface ObjCNameI2 {
fun @receiver:ObjCName("objCReceiver") Int.foo(@ObjCName("objCParam") param: Int): Int
}
class ObjCNameC4: ObjCNameI2 {
override fun Int.foo(param: Int): Int = this * param
}
@ObjCName("ObjCNameObjCObject", "ObjCNameSwiftObject")
object ObjCNameKotlinObject
@ObjCName("ObjCNameObjCEnum", "ObjCNameSwiftEnum")
enum class ObjCNameKotlinEnum {
@ObjCName("objcOne", "swiftOne")
KOTLIN_ONE,
@ObjCName("objcTwo", "companion")
kotlinTwo,
@ObjCName("objcThree", "swiftThree")
KotlinThree;
companion object {
fun foo(): Int = 0
}
}