Home | History | Annotate | Download | only in ARCMT
      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<P>   // 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, P>  // 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<P>   { // 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, P> // 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, P4>
     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<P6>  // 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