1// RUN: rm -rf %t 2// RUN: %clang_cc1 -objcmt-migrate-protocol-conformance -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11 3// RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result 4// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result 5 6@interface NSObject @end 7 8@protocol P 9- (id) Meth1: (double) arg; 10@end 11 12@interface Test1 // Test for no super class and no protocol list 13@end 14 15@implementation Test1 16- (id) Meth1: (double) arg { return 0; } 17@end 18 19@protocol P1 @end 20@protocol P2 @end 21 22@interface Test2 <P1, P2> // Test for no super class and with protocol list 23{ 24 id IVAR1; 25 id IVAR2; 26} 27@end 28 29@implementation Test2 30- (id) Meth1: (double) arg { return 0; } 31@end 32 33@interface Test3 : NSObject { // Test for Super class and no protocol list 34 id IV1; 35} 36@end 37 38@implementation Test3 39- (id) Meth1: (double) arg { return 0; } 40@end 41 42@interface Test4 : NSObject <P1, P2> // Test for Super class and protocol list 43@end 44 45@implementation Test4 46- (id) Meth1: (double) arg { return 0; } 47@end 48 49// Test5 - conforms to P3 because it implement's P3's property. 50@protocol P3 51@property (copy) id Prop; 52@end 53 54@protocol P4 55@property (copy) id Prop; 56@end 57 58@interface Test5 : NSObject<P3> 59@end 60 61@implementation Test5 62@synthesize Prop=_XXX; 63@end 64 65@protocol P5 <P3, P4> 66@property (copy) id Prop; 67@end 68 69@protocol P6 <P3, P4, P5> 70@property (copy) id Prop; 71@end 72 73@interface Test6 : NSObject // Test for minimal listing of conforming protocols 74@property (copy) id Prop; 75@end 76 77@implementation Test6 78@end 79 80@class UIDynamicAnimator, UIWindow; 81@interface UIResponder : NSObject 82@end 83 84@protocol EmptyProtocol 85@end 86 87@protocol OptionalMethodsOnly 88@optional 89- (void)dynamicAnimatorWillResume:(UIDynamicAnimator*)animator; 90- (void)dynamicAnimatorDidPause:(UIDynamicAnimator*)animator; 91@end 92 93@protocol OptionalPropertiesOnly 94@optional 95@property (strong, nonatomic) id OptionalProperty; 96@end 97 98@protocol OptionalEvrything 99@optional 100- (void)dynamicAnimatorWillResume:(UIDynamicAnimator*)animator; 101@property (strong, nonatomic) id OptionalProperty; 102- (void)dynamicAnimatorDidPause:(UIDynamicAnimator*)animator; 103@end 104 105@protocol UIApplicationDelegate 106@end 107 108@interface Test7 : UIResponder <UIApplicationDelegate> 109@property (strong, nonatomic) UIWindow *window; 110@end 111 112@implementation Test7 113@end 114 115// rdar://15515206 116@interface BTLEBrowser 117@end 118 119@protocol CBCentralManagerDelegate; 120 121@protocol CBCentralManagerDelegate 122- (id) Meth1: (double) arg; 123@end 124 125@interface BTLEBrowser() <CBCentralManagerDelegate> 126@end 127 128@implementation BTLEBrowser 129- (id) Meth15515206: (double) arg { return 0; } 130@end 131