1*67e74705SXin Li// RUN: %clang_cc1 -triple i386-apple-darwin8 -analyze -analyzer-checker=core,alpha.core -analyzer-constraints=range -analyzer-store=region -verify -Wno-objc-root-class %s 2*67e74705SXin Li 3*67e74705SXin Li// <rdar://problem/6888289> - This test case shows that a nil instance 4*67e74705SXin Li// variable can possibly be initialized by a method. 5*67e74705SXin Li@interface RDar6888289 6*67e74705SXin Li{ 7*67e74705SXin Li id *x; 8*67e74705SXin Li} 9*67e74705SXin Li- (void) test:(id) y; 10*67e74705SXin Li- (void) test2:(id) y; 11*67e74705SXin Li- (void) invalidate; 12*67e74705SXin Li@end 13*67e74705SXin Li 14*67e74705SXin Liid *getVal(void); 15*67e74705SXin Li 16*67e74705SXin Li@implementation RDar6888289 17*67e74705SXin Li- (void) test:(id)y { 18*67e74705SXin Li if (!x) 19*67e74705SXin Li [self invalidate]; 20*67e74705SXin Li *x = y; 21*67e74705SXin Li} 22*67e74705SXin Li- (void) test2:(id)y { 23*67e74705SXin Li if (!x) {} 24*67e74705SXin Li *x = y; // expected-warning {{null}} 25*67e74705SXin Li} 26*67e74705SXin Li 27*67e74705SXin Li- (void) invalidate { 28*67e74705SXin Li x = getVal(); 29*67e74705SXin Li} 30*67e74705SXin Li 31*67e74705SXin Li@end 32*67e74705SXin Li 33