50 lines · plain
1// RUN: %clang_analyze_cc1 -analyzer-checker=osx.cocoa.NonNilReturnValue,debug.ExprInspection -verify %s2 3typedef unsigned int NSUInteger;4typedef signed char BOOL;5 6@protocol NSObject - (BOOL)isEqual:(id)object; @end7 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@end17 18@interface NSArray : NSObject19- (id)objectAtIndex:(unsigned long)index;20@end21 22@interface NSArray (NSExtendedArray)23- (id)objectAtIndexedSubscript:(NSUInteger)idx;24@end25 26@interface NSMutableArray : NSArray27- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;28@end29 30@interface NSOrderedSet : NSObject31@end32@interface NSOrderedSet (NSOrderedSetCreation)33- (id)objectAtIndexedSubscript:(NSUInteger)idx;34@end35 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}