46 lines
		
	
	
		
			784 B
		
	
	
	
		
			Objective-C
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			784 B
		
	
	
	
		
			Objective-C
		
	
	
	
| // RUN: %clang_cc1  -fsyntax-only -Wundeclared-selector -verify -Wno-objc-root-class %s
 | |
| 
 | |
| typedef struct objc_selector *SEL;
 | |
| 
 | |
| @interface MyClass
 | |
| 
 | |
| + (void) methodA;
 | |
| - (void) methodB;
 | |
| + (void) methodD;
 | |
| - (void) methodF;
 | |
| 
 | |
| @end
 | |
| 
 | |
| @implementation MyClass
 | |
| 
 | |
| + (void) methodA {}
 | |
| - (void) methodB {}
 | |
| + (void) methodD
 | |
| {
 | |
|   SEL d = @selector(methodD); /* Ok */
 | |
|   SEL e = @selector(methodE);
 | |
| }
 | |
| 
 | |
| - (void) methodE
 | |
| {
 | |
|   SEL e = @selector(methodE); /* Ok */
 | |
| }
 | |
| 
 | |
| - (void) methodF
 | |
| {
 | |
|   SEL e = @selector(methodE); /* Ok */
 | |
| }
 | |
| 
 | |
| @end
 | |
| 
 | |
| int main (void)
 | |
| {
 | |
|   SEL a = @selector(methodA); /* Ok */
 | |
|   SEL b = @selector(methodB); /* Ok */
 | |
|   SEL c = @selector(methodC);  // expected-warning {{undeclared selector 'methodC'}}
 | |
|   SEL d = @selector(methodD); /* Ok */
 | |
|   SEL e = @selector(methodE); /* Ok */
 | |
|   return 0;
 | |
|   
 | |
| }
 |