[ObjCExport] ObjCExportDependenciesHeaderGeneratorTest: Add tests for exported / non exported dependencies
KT-65670
This commit is contained in:
committed by
Space Team
parent
64503d9217
commit
7ee2903e15
+17
@@ -52,7 +52,24 @@ class ObjCExportDependenciesHeaderGeneratorTest(
|
||||
doTest(dependenciesDir.resolve("implementIterator"))
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun `test - notExportedDependency`() {
|
||||
doTest(
|
||||
dependenciesDir.resolve("notExportedDependency"), configuration = HeaderGenerator.Configuration(
|
||||
frameworkName = "MyApp",
|
||||
generateBaseDeclarationStubs = true,
|
||||
dependencies = listOf(testLibraryAKlibFile, testLibraryBKlibFile),
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* https://youtrack.jetbrains.com/issue/KT-65327/Support-reading-klib-contents-in-Analysis-API
|
||||
* Requires being able to use AA to iterate over symbols to 'export' the dependency
|
||||
*/
|
||||
@Test
|
||||
@TodoAnalysisApi
|
||||
fun `test - exportedAndNotExportedDependency`() {
|
||||
doTest(
|
||||
dependenciesDir.resolve("exportedAndNotExportedDependency"), configuration = HeaderGenerator.Configuration(
|
||||
|
||||
Vendored
+1
-1
@@ -1,2 +1,2 @@
|
||||
// LibraryA is exported, LibraryB will just be referenced in this return type */
|
||||
fun foo(): MyLibraryB = error("stub")
|
||||
fun foo(): org.jetbrains.b.MyLibraryB = error("stub")
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
#import <Foundation/NSArray.h>
|
||||
#import <Foundation/NSDictionary.h>
|
||||
#import <Foundation/NSError.h>
|
||||
#import <Foundation/NSObject.h>
|
||||
#import <Foundation/NSSet.h>
|
||||
#import <Foundation/NSString.h>
|
||||
#import <Foundation/NSValue.h>
|
||||
|
||||
@class MyAppTLAMyLibraryA;
|
||||
|
||||
@protocol MyAppKotlinIterator;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wunknown-warning-option"
|
||||
#pragma clang diagnostic ignored "-Wincompatible-property-type"
|
||||
#pragma clang diagnostic ignored "-Wnullability"
|
||||
|
||||
#pragma push_macro("_Nullable_result")
|
||||
#if !__has_feature(nullability_nullable_result)
|
||||
#undef _Nullable_result
|
||||
#define _Nullable_result _Nullable
|
||||
#endif
|
||||
|
||||
__attribute__((swift_name("KotlinBase")))
|
||||
@interface MyAppBase : NSObject
|
||||
- (instancetype)init __attribute__((unavailable));
|
||||
+ (instancetype)new __attribute__((unavailable));
|
||||
+ (void)initialize __attribute__((objc_requires_super));
|
||||
@end
|
||||
|
||||
@interface MyAppBase (MyAppBaseCopying) <NSCopying>
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinMutableSet")))
|
||||
@interface MyAppMutableSet<ObjectType> : NSMutableSet<ObjectType>
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinMutableDictionary")))
|
||||
@interface MyAppMutableDictionary<KeyType, ObjectType> : NSMutableDictionary<KeyType, ObjectType>
|
||||
@end
|
||||
|
||||
@interface NSError (NSErrorMyAppKotlinException)
|
||||
@property (readonly) id _Nullable kotlinException;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinNumber")))
|
||||
@interface MyAppNumber : NSNumber
|
||||
- (instancetype)initWithChar:(char)value __attribute__((unavailable));
|
||||
- (instancetype)initWithUnsignedChar:(unsigned char)value __attribute__((unavailable));
|
||||
- (instancetype)initWithShort:(short)value __attribute__((unavailable));
|
||||
- (instancetype)initWithUnsignedShort:(unsigned short)value __attribute__((unavailable));
|
||||
- (instancetype)initWithInt:(int)value __attribute__((unavailable));
|
||||
- (instancetype)initWithUnsignedInt:(unsigned int)value __attribute__((unavailable));
|
||||
- (instancetype)initWithLong:(long)value __attribute__((unavailable));
|
||||
- (instancetype)initWithUnsignedLong:(unsigned long)value __attribute__((unavailable));
|
||||
- (instancetype)initWithLongLong:(long long)value __attribute__((unavailable));
|
||||
- (instancetype)initWithUnsignedLongLong:(unsigned long long)value __attribute__((unavailable));
|
||||
- (instancetype)initWithFloat:(float)value __attribute__((unavailable));
|
||||
- (instancetype)initWithDouble:(double)value __attribute__((unavailable));
|
||||
- (instancetype)initWithBool:(BOOL)value __attribute__((unavailable));
|
||||
- (instancetype)initWithInteger:(NSInteger)value __attribute__((unavailable));
|
||||
- (instancetype)initWithUnsignedInteger:(NSUInteger)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithChar:(char)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithUnsignedChar:(unsigned char)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithShort:(short)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithUnsignedShort:(unsigned short)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithInt:(int)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithUnsignedInt:(unsigned int)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithLong:(long)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithUnsignedLong:(unsigned long)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithLongLong:(long long)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithUnsignedLongLong:(unsigned long long)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithFloat:(float)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithDouble:(double)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithBool:(BOOL)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithInteger:(NSInteger)value __attribute__((unavailable));
|
||||
+ (instancetype)numberWithUnsignedInteger:(NSUInteger)value __attribute__((unavailable));
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinByte")))
|
||||
@interface MyAppByte : MyAppNumber
|
||||
- (instancetype)initWithChar:(char)value;
|
||||
+ (instancetype)numberWithChar:(char)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinUByte")))
|
||||
@interface MyAppUByte : MyAppNumber
|
||||
- (instancetype)initWithUnsignedChar:(unsigned char)value;
|
||||
+ (instancetype)numberWithUnsignedChar:(unsigned char)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinShort")))
|
||||
@interface MyAppShort : MyAppNumber
|
||||
- (instancetype)initWithShort:(short)value;
|
||||
+ (instancetype)numberWithShort:(short)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinUShort")))
|
||||
@interface MyAppUShort : MyAppNumber
|
||||
- (instancetype)initWithUnsignedShort:(unsigned short)value;
|
||||
+ (instancetype)numberWithUnsignedShort:(unsigned short)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinInt")))
|
||||
@interface MyAppInt : MyAppNumber
|
||||
- (instancetype)initWithInt:(int)value;
|
||||
+ (instancetype)numberWithInt:(int)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinUInt")))
|
||||
@interface MyAppUInt : MyAppNumber
|
||||
- (instancetype)initWithUnsignedInt:(unsigned int)value;
|
||||
+ (instancetype)numberWithUnsignedInt:(unsigned int)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinLong")))
|
||||
@interface MyAppLong : MyAppNumber
|
||||
- (instancetype)initWithLongLong:(long long)value;
|
||||
+ (instancetype)numberWithLongLong:(long long)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinULong")))
|
||||
@interface MyAppULong : MyAppNumber
|
||||
- (instancetype)initWithUnsignedLongLong:(unsigned long long)value;
|
||||
+ (instancetype)numberWithUnsignedLongLong:(unsigned long long)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinFloat")))
|
||||
@interface MyAppFloat : MyAppNumber
|
||||
- (instancetype)initWithFloat:(float)value;
|
||||
+ (instancetype)numberWithFloat:(float)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinDouble")))
|
||||
@interface MyAppDouble : MyAppNumber
|
||||
- (instancetype)initWithDouble:(double)value;
|
||||
+ (instancetype)numberWithDouble:(double)value;
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinBoolean")))
|
||||
@interface MyAppBoolean : MyAppNumber
|
||||
- (instancetype)initWithBool:(BOOL)value;
|
||||
+ (instancetype)numberWithBool:(BOOL)value;
|
||||
@end
|
||||
|
||||
__attribute__((objc_subclassing_restricted))
|
||||
__attribute__((swift_name("FooKt")))
|
||||
@interface MyAppFooKt : MyAppBase
|
||||
+ (MyAppTLAMyLibraryA *)foo __attribute__((swift_name("foo()")));
|
||||
+ (id<MyAppKotlinIterator>)withIterator __attribute__((swift_name("withIterator()")));
|
||||
@end
|
||||
|
||||
__attribute__((objc_subclassing_restricted))
|
||||
__attribute__((swift_name("TLAMyLibraryA")))
|
||||
@interface MyAppTLAMyLibraryA : MyAppBase
|
||||
- (instancetype)init __attribute__((swift_name("init()"))) __attribute__((objc_designated_initializer));
|
||||
+ (instancetype)new __attribute__((availability(swift, unavailable, message="use object initializers instead")));
|
||||
- (int32_t)returnInt __attribute__((swift_name("returnInt()")));
|
||||
- (MyAppTLAMyLibraryA *)returnMe __attribute__((swift_name("returnMe()")));
|
||||
@end
|
||||
|
||||
__attribute__((swift_name("KotlinIterator")))
|
||||
@protocol MyAppKotlinIterator
|
||||
@required
|
||||
- (BOOL)hasNext __attribute__((swift_name("hasNext()")));
|
||||
- (id _Nullable)next __attribute__((swift_name("next()")));
|
||||
@end
|
||||
|
||||
#pragma pop_macro("_Nullable_result")
|
||||
#pragma clang diagnostic pop
|
||||
NS_ASSUME_NONNULL_END
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
fun foo(): org.jetbrains.a.MyLibraryA = error("stub")
|
||||
fun withIterator(): Iterator<String> = error("stub")
|
||||
+7
@@ -1,4 +1,11 @@
|
||||
/*
|
||||
* Copyright 2010-2024 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:Suppress("unused")
|
||||
|
||||
package org.jetbrains.a
|
||||
/*
|
||||
* Copyright 2010-2024 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.
|
||||
+7
@@ -1,9 +1,16 @@
|
||||
/*
|
||||
* Copyright 2010-2024 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:Suppress("unused")
|
||||
/*
|
||||
* Copyright 2010-2024 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.
|
||||
*/
|
||||
|
||||
package org.jetbrains.b
|
||||
|
||||
class MyLibraryB {
|
||||
fun returnInt(): Int = 42
|
||||
fun returnMe(): MyLibraryB = this
|
||||
Reference in New Issue
Block a user