| // 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; |
| |
| } |