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 | 2ec93a8ec874088f7c410da46546ebdac94f258c (patch) | |
tree | 7bee677567379e547fcbc157d3746aa103ed55ff | |
parent | af20afb761a2426cd715fb8db36b90092e0bb6ef (diff) |
Allow __attribute__((unused)) to be applied to ObjC ivars.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97103 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaDeclAttr.cpp | 2 | ||||
-rw-r--r-- | test/SemaObjC/unused.m | 21 |
2 files changed, 12 insertions, 11 deletions
diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp index 8a8ad28def..242d66fa52 100644 --- a/lib/Sema/SemaDeclAttr.cpp +++ b/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/test/SemaObjC/unused.m b/test/SemaObjC/unused.m index 7fdb80152f..e99418875a 100644 --- a/test/SemaObjC/unused.m +++ b/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 |