113 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| // RUN: %clang_cc1  -fsyntax-only -Wselector -verify -Wno-objc-root-class %s
 | |
| // rdar://8851684
 | |
| 
 | |
| @interface Foo
 | |
| - (void) foo;
 | |
| - (void) bar;
 | |
| @end
 | |
| 
 | |
| @implementation Foo
 | |
| - (void) bar
 | |
| {
 | |
| }
 | |
| 
 | |
| - (void) foo
 | |
| {
 | |
|   SEL a,b,c;
 | |
|   a = @selector(b1ar);  // expected-warning {{creating selector for nonexistent method 'b1ar'}}
 | |
|   b = @selector(bar);
 | |
| }
 | |
| @end
 | |
| 
 | |
| @interface I
 | |
| - length;
 | |
| @end
 | |
| 
 | |
| SEL func()
 | |
| {
 | |
|     return  @selector(length);  // expected-warning {{creating selector for nonexistent method 'length'}}
 | |
| }
 | |
| 
 | |
| // rdar://9545564
 | |
| @class MSPauseManager;
 | |
| 
 | |
| @protocol MSPauseManagerDelegate 
 | |
| @optional
 | |
| - (void)pauseManagerDidPause:(MSPauseManager *)manager;
 | |
| - (int)respondsToSelector:(SEL)aSelector;
 | |
| @end
 | |
| 
 | |
| @interface MSPauseManager
 | |
| {
 | |
|   id<MSPauseManagerDelegate> _delegate;
 | |
| }
 | |
| @end
 | |
| 
 | |
| 
 | |
| @implementation MSPauseManager
 | |
| - (id) Meth {
 | |
|   if ([_delegate respondsToSelector:@selector(pauseManagerDidPause:)])
 | |
|     return 0;
 | |
|   return 0;
 | |
| }
 | |
| @end
 | |
| 
 | |
| // rdar://12938616
 | |
| @class NSXPCConnection;
 | |
| 
 | |
| @interface NSObject
 | |
| @end
 | |
| 
 | |
| @interface INTF : NSObject
 | |
| {
 | |
|   NSXPCConnection *cnx; // Comes in as a parameter.
 | |
| }
 | |
| - (void) Meth;
 | |
| @end
 | |
| 
 | |
| extern SEL MySelector(SEL s);
 | |
| 
 | |
| @implementation INTF
 | |
| - (void) Meth {
 | |
|   if( [cnx respondsToSelector:MySelector(@selector( _setQueue: ))] ) // expected-warning {{creating selector for nonexistent method '_setQueue:'}} 
 | |
|   {
 | |
|   }
 | |
| 
 | |
|   if( [cnx respondsToSelector:@selector( _setQueueXX: )] ) // No warning here.
 | |
|   {
 | |
|   }
 | |
|   if( [cnx respondsToSelector:(@selector( _setQueueXX: ))] ) // No warning here.
 | |
|   {
 | |
|   }
 | |
| }
 | |
| @end
 | |
| 
 | |
| // rdar://14007194
 | |
| @interface UxTechTest : NSObject
 | |
| - (int) invalidate : (id)Arg; // expected-warning {{multiple selectors named 'invalidate:' found}}
 | |
| + (int) C_invalidate : (int)arg; // expected-warning {{multiple selectors named 'C_invalidate:' found}}
 | |
| @end
 | |
| 
 | |
| @interface UxTechTest(CAT)
 | |
| - (char) invalidate : (int)arg; // expected-note {{also found}}
 | |
| + (int) C_invalidate : (char)arg; // expected-note {{also found}}
 | |
| @end
 | |
| 
 | |
| @interface NSPort : NSObject
 | |
| - (double) invalidate : (void*)Arg1; // expected-note {{also found}}
 | |
| + (int) C_invalidate : (id*)arg; // expected-note {{also found}}
 | |
| @end
 | |
| 
 | |
| 
 | |
| @interface USEText : NSPort
 | |
| - (int) invalidate : (int)arg; // expected-note {{also found}}
 | |
| @end
 | |
| 
 | |
| @implementation USEText
 | |
| - (int) invalidate :(int) arg { return 0; }
 | |
| @end
 | |
| 
 | |
| @interface USETextSub : USEText
 | |
| - (int) invalidate : (id)arg;
 | |
| @end
 | 
