1 | // RUN: %clang_cc1 -fsyntax-only -Wundeclared-selector -verify -Wno-objc-root-class %s |
2 | |
3 | typedef struct objc_selector *SEL; |
4 | |
5 | @interface MyClass |
6 | |
7 | + (void) methodA; |
8 | - (void) methodB; |
9 | + (void) methodD; |
10 | - (void) methodF; |
11 | |
12 | @end |
13 | |
14 | @implementation MyClass |
15 | |
16 | + (void) methodA {} |
17 | - (void) methodB {} |
18 | + (void) methodD |
19 | { |
20 | SEL d = @selector(methodD); /* Ok */ |
21 | SEL e = @selector(methodE); |
22 | } |
23 | |
24 | - (void) methodE |
25 | { |
26 | SEL e = @selector(methodE); /* Ok */ |
27 | } |
28 | |
29 | - (void) methodF |
30 | { |
31 | SEL e = @selector(methodE); /* Ok */ |
32 | } |
33 | |
34 | @end |
35 | |
36 | int main (void) |
37 | { |
38 | SEL a = @selector(methodA); /* Ok */ |
39 | SEL b = @selector(methodB); /* Ok */ |
40 | SEL c = @selector(methodC); // expected-warning {{undeclared selector 'methodC'}} |
41 | SEL d = @selector(methodD); /* Ok */ |
42 | SEL e = @selector(methodE); /* Ok */ |
43 | return 0; |
44 | |
45 | } |
46 | |