зеркало из https://github.com/microsoft/clang.git
Added reference count checker test case.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52993 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
6e9784f159
Коммит
91d1a14be8
|
@ -0,0 +1,86 @@
|
|||
// RUN: clang -checker-cfref -verify %s
|
||||
|
||||
// BEGIN delta-debugging reduced header stuff
|
||||
|
||||
typedef struct objc_selector *SEL;
|
||||
typedef signed char BOOL;
|
||||
typedef unsigned int NSUInteger;
|
||||
typedef struct _NSZone NSZone;
|
||||
@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
|
||||
@protocol NSObject
|
||||
- (BOOL)isEqual:(id)object;
|
||||
- (oneway void)release;
|
||||
@end
|
||||
@protocol NSCopying
|
||||
- (id)copyWithZone:(NSZone *)zone;
|
||||
@end
|
||||
@protocol NSMutableCopying
|
||||
- (id)mutableCopyWithZone:(NSZone *)zone;
|
||||
@end
|
||||
@protocol NSCoding
|
||||
- (void)encodeWithCoder:(NSCoder *)aCoder;
|
||||
@end
|
||||
@interface NSObject <NSObject> {}
|
||||
+ (id)alloc;
|
||||
@end
|
||||
typedef float CGFloat;
|
||||
typedef struct _NSPoint {} NSRect;
|
||||
static __inline__ __attribute__((always_inline)) NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) {}
|
||||
typedef struct {} NSFastEnumerationState;
|
||||
@protocol NSFastEnumeration
|
||||
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len;
|
||||
@end
|
||||
@class NSString;
|
||||
@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration>
|
||||
- (NSUInteger)count;
|
||||
@end
|
||||
@interface NSMutableArray : NSArray
|
||||
- (void)addObject:(id)anObject;
|
||||
@end @class NSAppleEventDescriptor;
|
||||
enum { NSBackingStoreRetained = 0, NSBackingStoreNonretained = 1, NSBackingStoreBuffered = 2 };
|
||||
typedef NSUInteger NSBackingStoreType;
|
||||
@interface NSResponder : NSObject <NSCoding> {} @end
|
||||
@protocol NSAnimatablePropertyContainer
|
||||
- (id)animator;
|
||||
@end
|
||||
@protocol NSValidatedUserInterfaceItem
|
||||
- (SEL)action;
|
||||
@end
|
||||
@protocol NSUserInterfaceValidations
|
||||
- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)anItem;
|
||||
@end @class NSDate, NSDictionary, NSError, NSException, NSNotification;
|
||||
enum { NSBorderlessWindowMask = 0, NSTitledWindowMask = 1 << 0, NSClosableWindowMask = 1 << 1, NSMiniaturizableWindowMask = 1 << 2, NSResizableWindowMask = 1 << 3 };
|
||||
@interface NSWindow : NSResponder <NSAnimatablePropertyContainer, NSUserInterfaceValidations> {}
|
||||
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag;
|
||||
@end
|
||||
extern NSString *NSWindowDidBecomeKeyNotification;
|
||||
@interface NSPanel : NSWindow {}
|
||||
@end
|
||||
@class NSTableHeaderView;
|
||||
|
||||
// END delta-debugging reduced header stuff
|
||||
|
||||
@interface MyClass
|
||||
{
|
||||
NSMutableArray *panels;
|
||||
}
|
||||
- (void)myMethod;
|
||||
- (void)myMethod2;
|
||||
@end
|
||||
@implementation MyClass
|
||||
- (void)myMethod
|
||||
{
|
||||
NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1];
|
||||
|
||||
[panels addObject:panel];
|
||||
|
||||
[panel release]; // no-warning
|
||||
}
|
||||
- (void)myMethod2
|
||||
{
|
||||
NSPanel *panel = [[NSPanel alloc] initWithContentRect:NSMakeRect(0, 0, 200, 200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:(BOOL)1];
|
||||
|
||||
[panel addObject:panel]; // expected-warning{{leak}}
|
||||
}
|
||||
@end
|
||||
|
Загрузка…
Ссылка в новой задаче