diff options
Diffstat (limited to 'test/SemaObjC/method-attributes.m')
-rw-r--r-- | test/SemaObjC/method-attributes.m | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/test/SemaObjC/method-attributes.m b/test/SemaObjC/method-attributes.m index 9157fcfefe11..f7252af1f1b7 100644 --- a/test/SemaObjC/method-attributes.m +++ b/test/SemaObjC/method-attributes.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -verify -fsyntax-only %s +// RUN: %clang_cc1 -verify -fsyntax-only -Wno-objc-root-class %s @class NSString; @@ -13,20 +13,45 @@ @interface INTF - (int) foo1: (int)arg1 __attribute__((deprecated)); -- (int) foo: (int)arg1; +- (int) foo: (int)arg1; // expected-note {{method 'foo:' declared here}} -- (int) foo2: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)); +- (int) foo2: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)); // expected-note {{method 'foo2:' declared here}} +- (int) foo3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) __attribute__((ns_consumes_self)); @end @implementation INTF -- (int) foo: (int)arg1 __attribute__((deprecated)){ // expected-warning {{method attribute can only be specified}} +- (int) foo: (int)arg1 __attribute__((deprecated)){ // expected-warning {{attributes on method implementation and its declaration must match}} return 10; } - (int) foo1: (int)arg1 { return 10; } -- (int) foo2: (int)arg1 __attribute__((deprecated)) { // expected-warning {{method attribute can only be specified}} +- (int) foo2: (int)arg1 __attribute__((deprecated)) { // expected-warning {{attributes on method implementation and its declaration must match}} return 10; } +- (int) foo3: (int)arg1 __attribute__((deprecated)) __attribute__((unavailable)) __attribute__((ns_consumes_self)) {return 0; } +- (void) dep __attribute__((deprecated)) { } // OK private methodn @end + +// rdar://10529259 +#define IBAction void)__attribute__((ibaction) + +@interface Foo +- (void)doSomething1:(id)sender; +- (void)doSomething2:(id)sender; // expected-note {{method 'doSomething2:' declared here}} +@end + +@implementation Foo +- (void)doSomething1:(id)sender{} +- (void)doSomething2:(id)sender{} +@end + +@interface Bar : Foo +- (IBAction)doSomething1:(id)sender; +@end +@implementation Bar +- (IBAction)doSomething1:(id)sender {} +- (IBAction)doSomething2:(id)sender {} // expected-warning {{attributes on method implementation and its declaration must match}} +- (IBAction)doSomething3:(id)sender {} +@end |