diff options
| author | Ted Kremenek <kremenek@apple.com> | 2010-02-25 03:26:51 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2010-02-25 03:26:51 +0000 |
| commit | 6bf658abefb9e05c7fd70dbb97d3efacaa67b32a (patch) | |
| tree | 88dc03163641937840465f2769432e85ca23bbaa | |
| parent | 12ee380a61ce63a2d405e493799604365a5ea748 (diff) | |
| download | bcm5719-llvm-6bf658abefb9e05c7fd70dbb97d3efacaa67b32a.tar.gz bcm5719-llvm-6bf658abefb9e05c7fd70dbb97d3efacaa67b32a.zip | |
Allow __attribute__((unused)) to be applied to ObjC ivars.
llvm-svn: 97103
| -rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 2 | ||||
| -rw-r--r-- | clang/test/SemaObjC/unused.m | 21 |
2 files changed, 12 insertions, 11 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 8a8ad28def2..242d66fa521 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -521,7 +521,7 @@ static void HandleUnusedAttr(Decl *d, const AttributeList &Attr, Sema &S) { return; } - if (!isa<VarDecl>(d) && !isFunctionOrMethod(d)) { + if (!isa<VarDecl>(d) && !isa<ObjCIvarDecl>(d) && !isFunctionOrMethod(d)) { S.Diag(Attr.getLoc(), diag::warn_attribute_wrong_decl_type) << Attr.getName() << 2 /*variable and function*/; return; diff --git a/clang/test/SemaObjC/unused.m b/clang/test/SemaObjC/unused.m index 7fdb80152f3..e99418875ae 100644 --- a/clang/test/SemaObjC/unused.m +++ b/clang/test/SemaObjC/unused.m @@ -7,19 +7,14 @@ int printf(const char *, ...); @end @implementation Greeter -+ (void) hello { - printf("Hello, World!\n"); -} ++ (void) hello { printf("Hello, World!\n"); } @end - int test1(void) { [Greeter hello]; return 0; } - - @interface NSObject @end @interface NSString : NSObject - (int)length; @@ -29,10 +24,6 @@ void test2() { @"pointless example call for test purposes".length; // expected-warning {{property access result unused - getters should not have side effects}} } - - - - @interface foo - (int)meth: (int)x: (int)y: (int)z ; @end @@ -42,3 +33,13 @@ void test2() { (int)y: // expected-warning{{unused}} (int) __attribute__((unused))z { return x; } @end + +//===------------------------------------------------------------------------=== +// The next test shows how clang accepted attribute((unused)) on ObjC +// instance variables, which GCC does not. +//===------------------------------------------------------------------------=== + +@interface TestUnusedIvar { + id x __attribute__((unused)); // no-warning +} +@end |

