PR3991.m revision 3a3c624dab31398373e80411fcf6d1d85c262010
1326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=basic -verify -triple x86_64-apple-darwin9 %s && 24419977d78018a9933c7f455fe001f644f2d638bStephen Hines// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic-old-cast -analyzer-constraints=basic -verify -triple x86_64-apple-darwin9 %s && 3326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 %s && 4326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams// RUN: clang-cc -analyze -checker-cfref -analyzer-store=basic-old-cast -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 %s && 5326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=basic -verify -triple x86_64-apple-darwin9 %s && 6326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams// RUN: clang-cc -analyze -checker-cfref -analyzer-store=region -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 %s 7326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 8326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams//===----------------------------------------------------------------------===// 9326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams// Delta-debugging produced forward declarations. 10326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams//===----------------------------------------------------------------------===// 11326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams 12326e0ddf89e8df2837752fbfd7a014814b32082cJason Samstypedef signed char BOOL; 13326e0ddf89e8df2837752fbfd7a014814b32082cJason Samstypedef struct _NSZone NSZone; 14326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; 15326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@protocol NSObject - (BOOL)isEqual:(id)object; 16326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone; 17326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; 18326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; 19326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@end @interface NSObject <NSObject> { 20326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 21c31585b8ca865bf2b35abc79c8a8ee42de27bee8Yang Ni@end extern id <NSObject> NSAllocateObject(Class aClass, unsigned extraBytes, NSZone *zone); 22326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding> - (unsigned)count; 2347935ac8e3dd619f758abd576605a564e33bb59cTobias Grosser@end @class NSTimer, NSPort, NSArray; 24a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams@class NSURLHandle, NSMutableArray, NSMutableData, NSData, NSURL; 25326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@interface NSResponder : NSObject <NSCoding> { 26326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 27326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@end @class NSBitmapImageRep, NSCursor, NSGraphicsContext, NSImage, NSPasteboard, NSScrollView, NSWindow, NSAttributedString; 28326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams@interface NSView : NSResponder { 2993eacc7ce0aad4314b4cb41a281f59ce54bb3286Jason Sams struct __VFlags2 { 30a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams } 31a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams _vFlags2; 32a0a1b6fbece2eb8d72d788422ab3e5f58d5a9216Jason Sams} 33ccc010bb7c0f89e162bf60033968a20be90a903aJason Sams@end @class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError; 3493eacc7ce0aad4314b4cb41a281f59ce54bb3286Jason Sams@interface NSBox : NSView { 35326e0ddf89e8df2837752fbfd7a014814b32082cJason Sams} 36eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni@end @class GDataFeedDocList, GDataServiceTicket, GDataServiceTicket, IHGoogleDocsAdapter; 37dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams@protocol IHGoogleDocsAdapterDelegate - (void)googleDocsAdapter:(IHGoogleDocsAdapter*)inGoogleDocsAdapter accountVerifyIsValid:(BOOL)inIsValid error:(NSError *)inError; 38eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni@end @interface IHGoogleDocsAdapter : NSObject { 39eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni} 40eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni- (NSArray *)entries; 41dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams@end extern Class const kGDataUseRegisteredClass ; 42eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni@interface IHGoogleDocsAdapter () - (GDataFeedDocList *)feedDocList; 43dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams- (NSArray *)directoryPathComponents; 44dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams- (unsigned int)currentPathComponentIndex; 45dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams- (void)setCurrentPathComponentIndex:(unsigned int)aCurrentPathComponentIndex; 46dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams- (NSURL *)folderFeedURL; 47eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni@end @implementation IHGoogleDocsAdapter - (id)initWithUsername:(NSString *)inUsername password:(NSString *)inPassword owner:(NSObject <IHGoogleDocsAdapterDelegate> *)owner { 48eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni return 0; 49eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni} 50eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni 51eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni//===----------------------------------------------------------------------===// 52eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni// Actual test case: 53eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni// 54eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni// The analyzer currently doesn't reason about ObjCKVCRefExpr. Have both 55eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni// GRExprEngine::Visit and GRExprEngine::VisitLValue have such expressions 56dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams// evaluate to UnknownVal. 57dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams//===----------------------------------------------------------------------===// 58dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams 59dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams- (void)docListListFetchTicket:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedDocList *)feed { 60eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni BOOL doGetDir = self.directoryPathComponents != 0 && self.currentPathComponentIndex < [self.directoryPathComponents count]; 61dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams if (doGetDir) { 62eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni BOOL isDirExisting = [[self.feedDocList entries] count] > 0; 63eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni if (isDirExisting) { 64dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams if (self.folderFeedURL != 0) { 65dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams if (++self.currentPathComponentIndex == [self.directoryPathComponents count]) { 66eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni } 67dbe66d6783c1e53cd1572de0ef6ef6fdf6f76f48Jason Sams } 68eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni } 69eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni } 70eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni} 71eb9aa675754c49f613c6ad71d41472b30f38b007Yang Ni