| // RUN: %clang_cc1 -fobjc-arc -fsyntax-only -verify -Wselector-type-mismatch %s |
| extern Class object_getClass(id); |
| __attribute__((objc_root_class)) |
| + (void)directMethod __attribute__((objc_direct)); // expected-note {{direct method 'directMethod' declared here}} |
| + (void)anotherDirectMethod __attribute__((objc_direct)); |
| return object_getClass(self); |
| + (void)anotherDirectMethod { |
| [self directMethod]; // this should not warn |
| [self directMethod]; // this should not warn |
| [self anotherDirectMethod]; // this should not warn |
| - (void)regularInstanceMethod { |
| [[self class] directMethod]; // expected-error {{messaging a Class with a method that is possibly direct}} |
| [self directMethod]; // this should not warn |
| __attribute__((objc_root_class)) |
| [self directMethod]; // expected-error {{no known class method for selector 'directMethod'}} |