1 // RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s 2 3 @class NSString; 4 5 @interface A 6 -t1 __attribute__((noreturn)); 7 - (NSString *)stringByAppendingFormat:(NSString *)format, ... __attribute__((format(__NSString__, 1, 2))); 8 -(void) m0 __attribute__((noreturn)); 9 -(void) m1 __attribute__((unused)); 10 @end 11 12 13 @interface INTF 14 - (int) foo1: (int)arg1 __attribute__((deprecated)); 15 16 - (int) foo: (int)arg1; // expected-note {{method 'foo:' declared here}} 17 18 - (int) foo2: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)); // expected-note {{method 'foo2:' declared here}} 19 - (int) foo3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) __attribute__((ns_consumes_self)); 20 @end 21 22 @implementation INTF 23 - (int) foo: (int)arg1 __attribute__((deprecated)){ // expected-warning {{attributes on method implementation and its declaration must match}} 24 return 10; 25 } 26 - (int) foo1: (int)arg1 { 27 return 10; 28 } 29 - (int) foo2: (int)arg1 __attribute__((deprecated)) { // expected-warning {{attributes on method implementation and its declaration must match}} 30 return 10; 31 } 32 - (int) foo3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) __attribute__((ns_consumes_self)) {return 0; } 33 - (void) dep __attribute__((deprecated)) { } // OK private methodn 34 @end 35 36 37 // rdar://10529259 38 #define IBAction void)__attribute__((ibaction) 39 40 @interface Foo 41 - (void)doSomething1:(id)sender; 42 - (void)doSomething2:(id)sender; // expected-note {{method 'doSomething2:' declared here}} 43 @end 44 45 @implementation Foo 46 - (void)doSomething1:(id)sender{} 47 - (void)doSomething2:(id)sender{} 48 @end 49 50 @interface Bar : Foo 51 - (IBAction)doSomething1:(id)sender; 52 @end 53 @implementation Bar 54 - (IBAction)doSomething1:(id)sender {} 55 - (IBAction)doSomething2:(id)sender {} // expected-warning {{attributes on method implementation and its declaration must match}} 56 - (IBAction)doSomething3:(id)sender {} 57 @end 58 59 // rdar://11593375 60 @interface NSObject @end 61 62 @interface Test : NSObject 63 -(id)method __attribute__((deprecated)); 64 -(id)method1; 65 -(id)method2 __attribute__((aligned(16))); 66 - (id) method3: (int)arg1 __attribute__((aligned(16))) __attribute__((deprecated)) __attribute__((unavailable)); // expected-note {{method 'method3:' declared here}} 67 - (id) method4: (int)arg1 __attribute__((aligned(16))) __attribute__((deprecated)) __attribute__((unavailable)); 68 @end 69 70 @implementation Test 71 -(id)method __attribute__((aligned(16))) __attribute__((aligned(16))) __attribute__((deprecated)) { 72 return self; 73 } 74 -(id)method1 __attribute__((aligned(16))) { 75 return self; 76 } 77 -(id)method2 { 78 return self; 79 } 80 - (id) method3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) { // expected-warning {{attributes on method implementation and its declaration must match}} 81 return self; 82 } 83 - (id) method4: (int)arg1 __attribute__((aligned(16))) __attribute__((deprecated)) __attribute__((unavailable)) { 84 return self; 85 } 86 @end 87