Home | History | Annotate | Download | only in SemaObjC
      1 // RUN: %clang_cc1  -fsyntax-only -Wselector -verify -Wno-objc-root-class %s
      2 // rdar://8851684
      3 
      4 @interface Foo
      5 - (void) foo;
      6 - (void) bar;
      7 @end
      8 
      9 @implementation Foo
     10 - (void) bar
     11 {
     12 }
     13 
     14 - (void) foo
     15 {
     16   SEL a,b,c;
     17   a = @selector(b1ar);
     18   b = @selector(bar);
     19 }
     20 @end
     21 
     22 @interface I
     23 - length;
     24 @end
     25 
     26 SEL func()
     27 {
     28     return  @selector(length);  // expected-warning {{no method with selector 'length' is implemented in this translation unit}}
     29 }
     30 
     31 // rdar://9545564
     32 @class MSPauseManager;
     33 
     34 @protocol MSPauseManagerDelegate 
     35 @optional
     36 - (void)pauseManagerDidPause:(MSPauseManager *)manager;
     37 - (int)respondsToSelector:(SEL)aSelector;
     38 @end
     39 
     40 @interface MSPauseManager
     41 {
     42   id<MSPauseManagerDelegate> _delegate;
     43 }
     44 @end
     45 
     46 
     47 @implementation MSPauseManager
     48 - (id) Meth {
     49   if ([_delegate respondsToSelector:@selector(pauseManagerDidPause:)])
     50     return 0;
     51   return 0;
     52 }
     53 @end
     54 
     55 // rdar://12938616
     56 @class NSXPCConnection;
     57 
     58 @interface NSObject
     59 @end
     60 
     61 @interface INTF : NSObject
     62 {
     63   NSXPCConnection *cnx; // Comes in as a parameter.
     64 }
     65 - (void) Meth;
     66 @end
     67 
     68 extern SEL MySelector(SEL s);
     69 
     70 @implementation INTF
     71 - (void) Meth {
     72   if( [cnx respondsToSelector:MySelector(@selector( _setQueue: ))] )
     73   {
     74   }
     75 
     76   if( [cnx respondsToSelector:@selector( _setQueueXX: )] ) // No warning here.
     77   {
     78   }
     79   if( [cnx respondsToSelector:(@selector( _setQueueXX: ))] ) // No warning here.
     80   {
     81   }
     82 }
     83 @end
     84 
     85 // rdar://14007194
     86 @interface UxTechTest : NSObject
     87 - (int) invalidate : (id)Arg;
     88 + (int) C_invalidate : (int)arg;
     89 @end
     90 
     91 @interface UxTechTest(CAT)
     92 - (char) invalidate : (int)arg;
     93 + (int) C_invalidate : (char)arg;
     94 @end
     95 
     96 @interface NSPort : NSObject
     97 - (double) invalidate : (void*)Arg1;
     98 + (int) C_invalidate : (id*)arg;
     99 @end
    100 
    101 
    102 @interface USEText : NSPort
    103 - (int) invalidate : (int)arg;
    104 @end
    105 
    106 @implementation USEText
    107 - (int) invalidate :(int) arg { return 0; }
    108 @end
    109 
    110 @interface USETextSub : USEText
    111 - (int) invalidate : (id)arg;
    112 @end
    113 
    114 // rdar://16428638
    115 @interface I16428638
    116 - (int) compare: (I16428638 *) arg1; // commenting out this line avoids the warning
    117 @end
    118 
    119 @interface J16428638
    120 - (int) compare: (J16428638 *) arg1;
    121 @end
    122 
    123 @implementation J16428638
    124 - (void)method {
    125     SEL s = @selector(compare:); // spurious warning
    126     (void)s;
    127 }
    128 - (int) compare: (J16428638 *) arg1 {
    129     return 0;
    130 }
    131 @end
    132 
    133 void test16428638() {
    134     SEL s = @selector(compare:);
    135     (void)s;
    136 }
    137 
    138 // rdar://16607480
    139 @class NSString;
    140 @interface SELCanary : NSObject
    141 @property (readonly, nonatomic) NSString *name;
    142 @property (nonatomic, getter = isHidden) char hidden;
    143 @property (nonatomic, copy, getter = hasFish, setter = setFish:) NSString *ridiculousFish;
    144 @end
    145 
    146 @implementation SELCanary
    147 - (void) Meth {
    148  SEL properties[] = {
    149   @selector(name),
    150   @selector(isHidden),
    151   @selector(setHidden:),
    152   @selector(hasFish),
    153   @selector(setFish:)
    154  };
    155 }
    156 @end
    157 
    158