1// RUN: %clang_cc1 -analyze -analyzer-checker=osx.cocoa.NonNilReturnValue,debug.ExprInspection -verify %s 2 3typedef unsigned int NSUInteger; 4typedef signed char BOOL; 5 6@protocol NSObject - (BOOL)isEqual:(id)object; @end 7 8@interface NSObject <NSObject> {} 9+(id)alloc; 10+(id)new; 11-(id)init; 12-(id)autorelease; 13-(id)copy; 14- (Class)class; 15-(id)retain; 16@end 17 18@interface NSArray : NSObject 19- (id)objectAtIndex:(unsigned long)index; 20@end 21 22@interface NSArray (NSExtendedArray) 23- (id)objectAtIndexedSubscript:(NSUInteger)idx; 24@end 25 26@interface NSMutableArray : NSArray 27- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject; 28@end 29 30@interface NSOrderedSet : NSObject 31@end 32@interface NSOrderedSet (NSOrderedSetCreation) 33- (id)objectAtIndexedSubscript:(NSUInteger)idx; 34@end 35 36void clang_analyzer_eval(id); 37 38void assumeThatNSArrayObjectAtIndexIsNeverNull(NSArray *A, NSUInteger i) { 39 clang_analyzer_eval([A objectAtIndex: i]); // expected-warning {{TRUE}} 40 id subscriptObj = A[1]; 41 clang_analyzer_eval(subscriptObj); // expected-warning {{TRUE}} 42} 43 44void assumeThatNSMutableArrayObjectAtIndexIsNeverNull(NSMutableArray *A, NSUInteger i) { 45 clang_analyzer_eval([A objectAtIndex: i]); // expected-warning {{TRUE}} 46} 47 48void assumeThatNSArrayObjectAtIndexedSubscriptIsNeverNull(NSOrderedSet *A, NSUInteger i) { 49 clang_analyzer_eval(A[i]); // expected-warning {{TRUE}} 50}