mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Based off the test for `@_cdecl @implementation`. Split between need of the ObjC interop.
263 lines
7.8 KiB
Objective-C
263 lines
7.8 KiB
Objective-C
#if __OBJC__
|
|
|
|
@import Foundation;
|
|
|
|
@interface ObjCBaseClass
|
|
|
|
- (instancetype)init __attribute__((unavailable));
|
|
|
|
// Need two initializers to reproduce certain conflict bugs.
|
|
- (instancetype)initFromSuperclass:(int)param __attribute__((objc_designated_initializer));
|
|
- (instancetype)initFromSuperclass2:(int)param __attribute__((objc_designated_initializer));
|
|
|
|
- (void)superclassMethod:(int)param;
|
|
@property (assign) int superclassProperty;
|
|
|
|
+ (void)superclassClassMethod;
|
|
|
|
@end
|
|
|
|
@protocol ObjCProto
|
|
|
|
- (instancetype)initFromProtocol1:(int)param;
|
|
- (instancetype)initFromProtocol2:(int)param;
|
|
|
|
@end
|
|
|
|
@interface ObjCClass : ObjCBaseClass <ObjCProto>
|
|
|
|
- (instancetype)initNotFromProtocol:(int)param;
|
|
|
|
- (void)methodFromHeader1:(int)param;
|
|
- (void)methodFromHeader2:(int)param;
|
|
- (void)methodFromHeader3:(int)param;
|
|
- (void)methodFromHeader4:(int)param;
|
|
- (int)methodFromHeader5;
|
|
- (void)methodFromHeader6:(int)param;
|
|
|
|
@property int propertyFromHeader1;
|
|
@property int propertyFromHeader2;
|
|
@property int propertyFromHeader3;
|
|
@property int propertyFromHeader4;
|
|
@property int propertyFromHeader5;
|
|
@property int propertyFromHeader6;
|
|
@property int propertyFromHeader7;
|
|
@property int propertyFromHeader8;
|
|
@property int propertyFromHeader9;
|
|
@property int propertyFromHeader10;
|
|
@property int propertyFromHeader11;
|
|
|
|
@property (readonly) int readonlyPropertyFromHeader1;
|
|
@property (readonly) int readonlyPropertyFromHeader2;
|
|
@property (readonly) int readonlyPropertyFromHeader3;
|
|
@property (readonly) int readonlyPropertyFromHeader4;
|
|
@property (readonly) int readonlyPropertyFromHeader5;
|
|
@property (readonly) int readonlyPropertyFromHeader6;
|
|
@property (readonly) int readonlyPropertyFromHeader7;
|
|
|
|
+ (void)classMethod1:(int)param;
|
|
+ (void)classMethod2:(int)param;
|
|
+ (void)classMethod3:(int)param;
|
|
|
|
- (void)instanceMethod1:(int)param;
|
|
- (void)instanceMethod2:(int)param;
|
|
|
|
// rdar://122280735 - crash when the parameter of a block property needs @escaping
|
|
@property (nonatomic, readonly) void (^ _Nonnull rdar122280735)(void (^_Nonnull completion)());
|
|
|
|
@end
|
|
|
|
@interface ObjCClass () <NSCopying>
|
|
|
|
- (void)extensionMethodFromHeader1:(int)param;
|
|
- (void)extensionMethodFromHeader2:(int)param;
|
|
|
|
@end
|
|
|
|
@interface ObjCClass (PresentAdditions)
|
|
|
|
- (void)categoryMethodFromHeader1:(int)param;
|
|
- (void)categoryMethodFromHeader2:(int)param;
|
|
- (void)categoryMethodFromHeader3:(int)param;
|
|
- (void)categoryMethodFromHeader4:(int)param;
|
|
|
|
@property int categoryPropertyFromHeader1;
|
|
@property int categoryPropertyFromHeader2;
|
|
@property int categoryPropertyFromHeader3;
|
|
@property int categoryPropertyFromHeader4;
|
|
@property int categoryPropertyFromHeader5;
|
|
|
|
@property (readonly) int categoryReadonlyPropertyFromHeader1;
|
|
|
|
|
|
@end
|
|
|
|
@interface ObjCClass (SwiftNameTests)
|
|
|
|
- (void)methodObjCName1 __attribute__((swift_name("methodSwiftName1()")));
|
|
- (void)methodObjCName2 __attribute__((swift_name("methodSwiftName2()")));
|
|
- (void)methodObjCName3 __attribute__((swift_name("methodSwiftName3()")));
|
|
- (void)methodObjCName4 __attribute__((swift_name("methodSwiftName4()")));
|
|
- (void)methodObjCName5 __attribute__((swift_name("methodSwiftName5()")));
|
|
- (void)methodObjCName6A __attribute__((swift_name("methodSwiftName6A()")));
|
|
- (void)methodObjCName6B __attribute__((swift_name("methodSwiftName6B()")));
|
|
|
|
@end
|
|
|
|
@interface ObjCClass (AmbiguousMethods)
|
|
|
|
- (void)ambiguousMethod1WithCInt:(int)param __attribute__((swift_name("ambiguousMethod1(with:)")));
|
|
- (void)ambiguousMethod1WithCChar:(char)param __attribute__((swift_name("ambiguousMethod1(with:)")));
|
|
|
|
- (void)ambiguousMethod2WithCInt:(int)param __attribute__((swift_name("ambiguousMethod2(with:)")));
|
|
- (void)ambiguousMethod2WithCChar:(char)param __attribute__((swift_name("ambiguousMethod2(with:)")));
|
|
|
|
- (void)ambiguousMethod3WithCInt:(int)param __attribute__((swift_name("ambiguousMethod3(with:)")));
|
|
- (void)ambiguousMethod3WithCChar:(char)param __attribute__((swift_name("ambiguousMethod3(with:)")));
|
|
|
|
- (void)ambiguousMethod4WithCInt:(int)param __attribute__((swift_name("ambiguousMethod4(with:)")));
|
|
|
|
@end
|
|
|
|
@interface ObjCClass (Effects)
|
|
- (void)doSomethingAsynchronousWithCompletionHandler:(void (^ _Nonnull)(id _Nullable result, NSError * _Nullable error))completionHandler;
|
|
- (void)doSomethingElseAsynchronousWithCompletionHandler:(void (^ _Nullable)(id _Nonnull result))completionHandler;
|
|
- (void)doSomethingFunAndAsynchronousWithCompletionHandler:(void (^ _Nonnull)(id _Nullable result, NSError * _Nullable error))completionHandler;
|
|
- (void)doSomethingMissingAndAsynchronousWithCompletionHandler:(void (^ _Nonnull)(id _Nullable result, NSError * _Nullable error))completionHandler;
|
|
|
|
- (void)doSomethingOverloadedWithCompletionHandler:(void (^ _Nonnull)())completionHandler;
|
|
- (void)doSomethingOverloaded __attribute__((__swift_attr__("@_unavailableFromAsync(message: \"Use async doSomethingOverloaded instead.\")")));
|
|
|
|
- (BOOL)doSomethingThatCanFailWithHandler:(void (^ _Nonnull)())handler error:(NSError **)error;
|
|
- (BOOL)doSomethingElseThatCanFail:(NSError **)error handler:(void (^ _Nonnull)())handler;
|
|
- (BOOL)doSomethingThatCanFailWithWeirdParameterWithHandler:(void (^ _Nonnull)())handler :(NSError **)error;
|
|
- (int)doSomethingThatCanFailWithWeirdReturnCodeWithError:(NSError **)error __attribute__((swift_error(nonzero_result)));
|
|
|
|
@end
|
|
|
|
@interface ObjCClass (InvalidMembers)
|
|
|
|
- (void)unimplementedMember;
|
|
- (void)nonObjCMethod:(id)value;
|
|
|
|
@end
|
|
|
|
@interface ObjCClass (EmptyCategory)
|
|
@end
|
|
|
|
@protocol PartiallyOptionalProtocol
|
|
|
|
- (void)requiredMethod1;
|
|
- (void)requiredMethod2;
|
|
|
|
@optional
|
|
- (void)optionalMethod1;
|
|
- (void)optionalMethod2;
|
|
|
|
@end
|
|
|
|
@interface ObjCClass (Conformance) <PartiallyOptionalProtocol>
|
|
|
|
@end
|
|
|
|
@interface ObjCClass (TypeMatchOptionality)
|
|
|
|
- (nullable id)nullableResultAndArg:(nullable id)arg;
|
|
- (nonnull id)nonnullResultAndArg:(nonnull id)arg;
|
|
- (null_unspecified id)nullUnspecifiedResultAndArg:(null_unspecified id)arg;
|
|
|
|
- (nonnull id)nonnullResult1;
|
|
- (nonnull id)nonnullResult2;
|
|
- (nonnull id)nonnullResult3;
|
|
|
|
- (void)nonnullArgument1:(nonnull id)arg;
|
|
- (void)nonnullArgument2:(nonnull id)arg;
|
|
- (void)nonnullArgument3:(nonnull id)arg;
|
|
|
|
- (nullable id)nullableResult;
|
|
- (void)nullableArgument:(nullable id)arg;
|
|
|
|
@end
|
|
|
|
@interface ObjCClass (TypeMatchOptionalityInvalid)
|
|
|
|
- (int)nonPointerResult;
|
|
- (void)nonPointerArgument:(int)arg;
|
|
|
|
@end
|
|
|
|
@interface ObjCSubclass : ObjCClass
|
|
|
|
- (void)subclassMethodFromHeader1:(int)param;
|
|
|
|
@end
|
|
|
|
@interface ObjCImplSubclass : ObjCClass
|
|
|
|
@end
|
|
|
|
@interface ObjCBasicInitClass : ObjCBaseClass
|
|
|
|
- (nonnull instancetype)init __attribute__((objc_designated_initializer));
|
|
|
|
@end
|
|
|
|
@interface ObjCImplRootClass
|
|
|
|
@end
|
|
|
|
@interface ObjCImplGenericClass<T> : NSObject
|
|
|
|
@end
|
|
|
|
@interface ObjCBadClass : NSObject
|
|
@end
|
|
|
|
@interface ObjCBadClass (BadCategory1)
|
|
@end
|
|
|
|
@interface ObjCBadClass (BadCategory2)
|
|
@end
|
|
|
|
@protocol EmptyObjCProto
|
|
@end
|
|
|
|
@interface ObjCClassWithWeirdSwiftAttributeCombo : ObjCBaseClass
|
|
|
|
@end
|
|
|
|
#endif
|
|
|
|
void CImplFunc1(int param);
|
|
void CImplFunc2(int param);
|
|
|
|
void CImplFuncRenamed_C(int param) __attribute__((swift_name("CImplFuncRenamed_Swift(arg:)")));
|
|
|
|
void CImplFuncMismatch1(int param);
|
|
void CImplFuncMismatch2(int param);
|
|
|
|
#if __OBJC__
|
|
void CImplFuncMismatch3(_Nullable id param);
|
|
void CImplFuncMismatch4(_Nullable id param);
|
|
void CImplFuncMismatch5(_Nonnull id param);
|
|
void CImplFuncMismatch6(_Nonnull id param);
|
|
_Nullable id CImplFuncMismatch3a(int param);
|
|
_Nullable id CImplFuncMismatch4a(int param);
|
|
_Nonnull id CImplFuncMismatch5a(int param);
|
|
_Nonnull id CImplFuncMismatch6a(int param);
|
|
#endif
|
|
|
|
void CImplFuncNameMismatch1(int param);
|
|
void CImplFuncNameMismatch2(int param);
|
|
|
|
int CImplGetComputedGlobal1(void) __attribute__((swift_name("getter:cImplComputedGlobal1()")));
|
|
void CImplSetComputedGlobal1(int param) __attribute__((swift_name("setter:cImplComputedGlobal1(newValue:)")));
|
|
|
|
typedef struct CImplStruct {} CImplStruct;
|
|
|
|
void CImplStructStaticFunc1(int param) __attribute__((swift_name("CImplStruct.staticFunc1(_:)")));
|
|
|
|
struct ObjCStruct {
|
|
int foo;
|
|
};
|