Allow __attribute__((unused)) to be applied to ObjC ivars.

llvm-svn: 97103
This commit is contained in:
Ted Kremenek 2010-02-25 03:26:51 +00:00
parent 12ee380a61
commit 6bf658abef
2 changed files with 12 additions and 11 deletions

View File

@ -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;

View File

@ -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