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