1*f4a2713aSLionel Sambuc// 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*f4a2713aSLionel Sambuc 3*f4a2713aSLionel Sambuc// <rdar://problem/6888289> - This test case shows that a nil instance 4*f4a2713aSLionel Sambuc// variable can possibly be initialized by a method. 5*f4a2713aSLionel Sambuc@interface RDar6888289 6*f4a2713aSLionel Sambuc{ 7*f4a2713aSLionel Sambuc id *x; 8*f4a2713aSLionel Sambuc} 9*f4a2713aSLionel Sambuc- (void) test:(id) y; 10*f4a2713aSLionel Sambuc- (void) test2:(id) y; 11*f4a2713aSLionel Sambuc- (void) invalidate; 12*f4a2713aSLionel Sambuc@end 13*f4a2713aSLionel Sambuc 14*f4a2713aSLionel Sambucid *getVal(void); 15*f4a2713aSLionel Sambuc 16*f4a2713aSLionel Sambuc@implementation RDar6888289 17*f4a2713aSLionel Sambuc- (void) test:(id)y { 18*f4a2713aSLionel Sambuc if (!x) 19*f4a2713aSLionel Sambuc [self invalidate]; 20*f4a2713aSLionel Sambuc *x = y; 21*f4a2713aSLionel Sambuc} 22*f4a2713aSLionel Sambuc- (void) test2:(id)y { 23*f4a2713aSLionel Sambuc if (!x) {} 24*f4a2713aSLionel Sambuc *x = y; // expected-warning {{null}} 25*f4a2713aSLionel Sambuc} 26*f4a2713aSLionel Sambuc 27*f4a2713aSLionel Sambuc- (void) invalidate { 28*f4a2713aSLionel Sambuc x = getVal(); 29*f4a2713aSLionel Sambuc} 30*f4a2713aSLionel Sambuc 31*f4a2713aSLionel Sambuc@end 32*f4a2713aSLionel Sambuc 33