1*67e74705SXin Li// RUN: %clang_cc1 -analyze -analyzer-checker=core,alpha.core -analyzer-store=region -analyzer-constraints=range -verify -triple x86_64-apple-darwin9 -Wno-incomplete-implementation %s 2*67e74705SXin Li// expected-no-diagnostics 3*67e74705SXin Li 4*67e74705SXin Li//===----------------------------------------------------------------------===// 5*67e74705SXin Li// Delta-debugging produced forward declarations. 6*67e74705SXin Li//===----------------------------------------------------------------------===// 7*67e74705SXin Li 8*67e74705SXin Litypedef signed char BOOL; 9*67e74705SXin Litypedef struct _NSZone NSZone; 10*67e74705SXin Li@class NSInvocation, NSMethodSignature, NSCoder, NSString, NSEnumerator; 11*67e74705SXin Li@protocol NSObject - (BOOL)isEqual:(id)object; 12*67e74705SXin Li@end @protocol NSCopying - (id)copyWithZone:(NSZone *)zone; 13*67e74705SXin Li@end @protocol NSMutableCopying - (id)mutableCopyWithZone:(NSZone *)zone; 14*67e74705SXin Li@end @protocol NSCoding - (void)encodeWithCoder:(NSCoder *)aCoder; 15*67e74705SXin Li@end @interface NSObject <NSObject> { 16*67e74705SXin Li} 17*67e74705SXin Li@end extern id <NSObject> NSAllocateObject(Class aClass, unsigned extraBytes, NSZone *zone); 18*67e74705SXin Li@interface NSArray : NSObject <NSCopying, NSMutableCopying, NSCoding> - (unsigned)count; 19*67e74705SXin Li@end @class NSTimer, NSPort, NSArray; 20*67e74705SXin Li@class NSURLHandle, NSMutableArray, NSMutableData, NSData, NSURL; 21*67e74705SXin Li@interface NSResponder : NSObject <NSCoding> { 22*67e74705SXin Li} 23*67e74705SXin Li@end @class NSBitmapImageRep, NSCursor, NSGraphicsContext, NSImage, NSPasteboard, NSScrollView, NSWindow, NSAttributedString; 24*67e74705SXin Li@interface NSView : NSResponder { 25*67e74705SXin Li struct __VFlags2 { 26*67e74705SXin Li } 27*67e74705SXin Li _vFlags2; 28*67e74705SXin Li} 29*67e74705SXin Li@end @class NSTextField, NSPanel, NSArray, NSWindow, NSImage, NSButton, NSError; 30*67e74705SXin Li@interface NSBox : NSView { 31*67e74705SXin Li} 32*67e74705SXin Li@end @class GDataFeedDocList, GDataServiceTicket, GDataServiceTicket, IHGoogleDocsAdapter; 33*67e74705SXin Li@protocol IHGoogleDocsAdapterDelegate - (void)googleDocsAdapter:(IHGoogleDocsAdapter*)inGoogleDocsAdapter accountVerifyIsValid:(BOOL)inIsValid error:(NSError *)inError; 34*67e74705SXin Li@end @interface IHGoogleDocsAdapter : NSObject { 35*67e74705SXin Li} 36*67e74705SXin Li- (NSArray *)entries; 37*67e74705SXin Li@end extern Class const kGDataUseRegisteredClass ; 38*67e74705SXin Li@interface IHGoogleDocsAdapter () - (GDataFeedDocList *)feedDocList; 39*67e74705SXin Li- (NSArray *)directoryPathComponents; 40*67e74705SXin Li- (unsigned int)currentPathComponentIndex; 41*67e74705SXin Li- (void)setCurrentPathComponentIndex:(unsigned int)aCurrentPathComponentIndex; 42*67e74705SXin Li- (NSURL *)folderFeedURL; 43*67e74705SXin Li@end 44*67e74705SXin Li 45*67e74705SXin Li@implementation IHGoogleDocsAdapter - (id)initWithUsername:(NSString *)inUsername password:(NSString *)inPassword owner:(NSObject <IHGoogleDocsAdapterDelegate> *)owner { 46*67e74705SXin Li return 0; 47*67e74705SXin Li} 48*67e74705SXin Li 49*67e74705SXin Li//===----------------------------------------------------------------------===// 50*67e74705SXin Li// Actual test case: 51*67e74705SXin Li// 52*67e74705SXin Li// The analyzer currently doesn't reason about ObjCKVCRefExpr. Have both 53*67e74705SXin Li// GRExprEngine::Visit and GRExprEngine::VisitLValue have such expressions 54*67e74705SXin Li// evaluate to UnknownVal. 55*67e74705SXin Li//===----------------------------------------------------------------------===// 56*67e74705SXin Li 57*67e74705SXin Li- (void)docListListFetchTicket:(GDataServiceTicket *)ticket finishedWithFeed:(GDataFeedDocList *)feed { 58*67e74705SXin Li BOOL doGetDir = self.directoryPathComponents != 0 && self.currentPathComponentIndex < [self.directoryPathComponents count]; 59*67e74705SXin Li if (doGetDir) { 60*67e74705SXin Li BOOL isDirExisting = [[self.feedDocList entries] count] > 0; 61*67e74705SXin Li if (isDirExisting) { 62*67e74705SXin Li if (self.folderFeedURL != 0) { 63*67e74705SXin Li if (++self.currentPathComponentIndex == [self.directoryPathComponents count]) { 64*67e74705SXin Li } 65*67e74705SXin Li } 66*67e74705SXin Li } 67*67e74705SXin Li } 68*67e74705SXin Li} 69*67e74705SXin Li@end 70