// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -fsyntax-only -fblocks %s -verify
#include<stdarg.h>@interfaceNSObject{}@end@classNSString;@interfaceNSException+ (void)raise:(NSString*)nameformat:(NSString*)format,...;+ (void)raise:(NSString*)nameformat:(NSString*)formatarguments:(va_list)argList;- (void)raise;@end// Duplicated from uninit-variables.c.
// Test just to ensure the analysis is working.
inttest1(void){int x;// expected-note{{initialize the variable 'x' to silence this warning}}
return x;// expected-warning{{variable 'x' is uninitialized when used here}}
}// Test ObjC fast enumeration.
voidtest2(void){id collection =0;for(id obj in collection){if(0== obj)// no-warning
break;}}voidtest3(void){id collection =0;id obj;for(obj in collection){// no-warning
if(0== obj)// no-warning
break;}}inttest_abort_on_exceptions(inty,NSException*e,NSString*s,int*z,...){int x;// expected-note {{initialize the variable 'x' to silence this warning}}
if(y ==1){
va_list alist;va_start(alist, z);[NSExceptionraise:@"Blah"format:@"Blah %@"arguments:alist];return x;}elseif(y ==2){[NSExceptionraise:@"Blah"format:s];return x;}elseif(y ==3){[e raise];return x;}return x;// expected-warning {{variable 'x' is uninitialized when used here}}
}