2017-03-03 07:30:53 +08:00
|
|
|
// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -analyzer-store=region -verify %s
|
2012-10-19 20:44:48 +08:00
|
|
|
// expected-no-diagnostics
|
2009-02-20 08:10:09 +08:00
|
|
|
//
|
|
|
|
// This test case mainly checks that the retain/release checker doesn't crash
|
|
|
|
// on this file.
|
|
|
|
//
|
|
|
|
typedef int int32_t;
|
|
|
|
typedef signed char BOOL;
|
|
|
|
typedef long NSInteger;
|
|
|
|
typedef unsigned long NSUInteger;
|
|
|
|
typedef struct _NSZone NSZone;
|
|
|
|
@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator;
|
|
|
|
@protocol NSObject - (BOOL)isEqual:(id)object;
|
|
|
|
@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone;
|
|
|
|
@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder;
|
|
|
|
@end @interface NSObject <NSObject> {}
|
|
|
|
@end extern id NSAllocateObject(Class aClass, NSUInteger extraBytes, NSZone *zone);
|
|
|
|
@interface NSResponder : NSObject <NSCoding> {}
|
|
|
|
@end @protocol NSAnimatablePropertyContainer - (id)animator;
|
|
|
|
@end extern NSString *NSAnimationTriggerOrderIn ;
|
|
|
|
@interface NSView : NSResponder <NSAnimatablePropertyContainer> {
|
|
|
|
}
|
|
|
|
@end enum {
|
|
|
|
NSNullCellType = 0, NSTextCellType = 1, NSImageCellType = 2 };
|
|
|
|
typedef struct __CFlags {
|
|
|
|
unsigned int botnet:3;
|
|
|
|
}
|
|
|
|
_CFlags;
|
|
|
|
@interface Bar : NSObject <NSCopying, NSCoding> {
|
|
|
|
_CFlags _cFlags;
|
|
|
|
@private id _support;
|
|
|
|
}
|
|
|
|
@end extern NSString *NSControlTintDidChangeNotification;
|
|
|
|
typedef NSInteger NSBotnet;
|
|
|
|
@interface NSControl : NSView {
|
|
|
|
}
|
|
|
|
@end @class NSAttributedString, NSFont, NSImage, NSSound;
|
|
|
|
typedef int32_t Baz;
|
|
|
|
@interface Bar(BarInternal) - (void)_setIsWhite:(BOOL)isWhite;
|
|
|
|
@end
|
|
|
|
@interface Bar (BarBotnetCompatibility)
|
|
|
|
- (NSBotnet)_initialBotnetZorg;
|
|
|
|
@end
|
|
|
|
typedef struct _NSRunArrayItem {
|
|
|
|
unsigned int botnetIsSet:1;
|
|
|
|
} BarAuxFlags;
|
|
|
|
@interface BarAuxiliary : NSObject {
|
|
|
|
@public
|
|
|
|
NSControl *controlView;
|
|
|
|
BarAuxFlags auxCFlags;
|
|
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation Bar
|
|
|
|
static Baz Qux = 0;
|
2009-07-22 02:48:43 +08:00
|
|
|
- (id)copyWithZone:(NSZone *)zone { return 0; }
|
2009-02-20 08:10:09 +08:00
|
|
|
- (void)encodeWithCoder:(NSCoder *)coder {}
|
|
|
|
@end
|
|
|
|
@implementation Bar (BarBotnet)
|
|
|
|
- (NSBotnet)botnet {
|
|
|
|
if (!(*(BarAuxiliary **)&self->_support)->auxCFlags.botnetIsSet) {
|
|
|
|
_cFlags.botnet = [self _initialBotnetZorg];
|
|
|
|
}
|
2009-07-22 02:48:43 +08:00
|
|
|
while (1) {}
|
2009-02-20 08:10:09 +08:00
|
|
|
}
|
|
|
|
@end
|