1 // RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -verify %s 2 3 // This test case was crashing due to how CFRefCount.cpp resolved the 4 // ObjCInterfaceDecl* and ClassName in EvalObjCMessageExpr. 5 6 typedef signed char BOOL; 7 typedef unsigned int NSUInteger; 8 typedef struct _NSZone NSZone; 9 @class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; 10 @protocol NSObject - (BOOL)isEqual:(id)object; 11 @end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone; 12 @end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; 13 @end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; 14 @end @interface NSObject <NSObject> { 15 } 16 @end typedef float CGFloat; 17 typedef struct _NSPoint { 18 } 19 NSFastEnumerationState; 20 @protocol NSFastEnumeration - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len; 21 @end @class NSString; 22 @interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count; 23 @end @interface NSMutableArray : NSArray - (void)addObject:(id)anObject; 24 @end typedef unsigned short unichar; 25 @interface NSString : NSObject <NSCopying, NSMutableCopying, NSCoding> - (NSUInteger)length; 26 - (int)intValue; 27 @end @interface NSSimpleCString : NSString { 28 } 29 @end @interface NSConstantString : NSSimpleCString @end extern void *_NSConstantStringClassReference; 30 @interface NSDictionary : NSObject <NSCopying, NSMutableCopying, NSCoding, NSFastEnumeration> - (NSUInteger)count; 31 @end @interface NSMutableDictionary : NSDictionary - (void)removeObjectForKey:(id)aKey; 32 @end typedef struct { 33 } 34 CMProfileLocation; 35 @interface NSResponder : NSObject <NSCoding> { 36 } 37 @end @class NSAttributedString, NSEvent, NSFont, NSFormatter, NSImage, NSMenu, NSText, NSView; 38 @interface NSCell : NSObject <NSCopying, NSCoding> { 39 } 40 @end extern NSString *NSControlTintDidChangeNotification; 41 @interface NSActionCell : NSCell { 42 } 43 @end @class NSArray, NSDocument, NSWindow; 44 @interface NSWindowController : NSResponder <NSCoding> { 45 } 46 @end @class EBayCategoryType, GSEbayCategory, GBSearchRequest; 47 @interface GBCategoryChooserPanelController : NSWindowController { 48 GSEbayCategory *rootCategory; 49 } 50 - (NSMutableDictionary*)categoryDictionaryForCategoryID:(int)inID inRootTreeCategories:(NSMutableArray*)inRootTreeCategories; // expected-note {{method definition for 'categoryDictionaryForCategoryID:inRootTreeCategories:' not found}} 51 -(NSString*) categoryID; // expected-note {{method definition for 'categoryID' not found}} expected-note {{using}} 52 @end @interface GSEbayCategory : NSObject <NSCoding> { 53 } 54 - (int) categoryID; // expected-note {{also found}} 55 - (GSEbayCategory *) parent; 56 - (GSEbayCategory*) subcategoryWithID:(int) inID; 57 @end @implementation GBCategoryChooserPanelController + (int) chooseCategoryIDFromCategories:(NSArray*) inCategories searchRequest:(GBSearchRequest*)inRequest parentWindow:(NSWindow*) inParent { // expected-warning {{incomplete implementation}} 58 return 0; 59 } 60 - (void) addCategory:(EBayCategoryType*)inCategory toRootTreeCategory:(NSMutableArray*)inRootTreeCategories { 61 GSEbayCategory *category = [rootCategory subcategoryWithID:[[inCategory categoryID] intValue]]; // expected-warning {{multiple methods named 'categoryID' found}} 62 63 if (rootCategory != category) { 64 GSEbayCategory *parent = category; 65 while ((((void*)0) != (parent = [parent parent])) && ([parent categoryID] != 0)) { 66 NSMutableDictionary *treeCategoryDict = [self categoryDictionaryForCategoryID:[parent categoryID] inRootTreeCategories:inRootTreeCategories]; 67 if (((void*)0) == treeCategoryDict) { 68 } 69 } 70 } 71 } 72 @end 73