unused-ivars.m revision 35ffcf3c2a054ee124fe8d47152c5d1bcdf86261
1// RUN: clang-cc -triple x86_64-apple-darwin10 -analyze -warn-objc-unused-ivars %s -verify 2 3//===--- BEGIN: Delta-debugging reduced headers. --------------------------===// 4 5@protocol NSObject 6- (id)retain; 7- (oneway void)release; 8@end 9@interface NSObject <NSObject> {} 10- (id)init; 11+ (id)alloc; 12@end 13 14//===--- END: Delta-debugging reduced headers. ----------------------------===// 15 16// This test case tests the basic functionality of the unused ivar test. 17@interface TestA { 18@private 19 int x; // expected-warning {{Instance variable 'x' in class 'TestA' is never used}} 20} 21@end 22@implementation TestA @end 23 24// This test case tests whether the unused ivar check handles blocks that 25// reference an instance variable. (<rdar://problem/7075531>) 26@interface TestB : NSObject { 27@private 28 id _ivar; // no-warning 29} 30@property (readwrite,retain) id ivar; 31@end 32 33@implementation TestB 34- (id)ivar { 35 __attribute__((__blocks__(byref))) id value = ((void*)0); 36 void (^b)() = ^{ value = _ivar; }; 37 b(); 38 return value; 39} 40 41- (void)setIvar:(id)newValue { 42 void (^b)() = ^{ [_ivar release]; _ivar = [newValue retain]; }; 43 b(); 44} 45@end 46