summaryrefslogtreecommitdiffstats
path: root/test/SemaObjC/uninit-variables.m
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaObjC/uninit-variables.m')
-rw-r--r--test/SemaObjC/uninit-variables.m29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/SemaObjC/uninit-variables.m b/test/SemaObjC/uninit-variables.m
index cad0f54..a331226 100644
--- a/test/SemaObjC/uninit-variables.m
+++ b/test/SemaObjC/uninit-variables.m
@@ -1,5 +1,16 @@
// RUN: %clang_cc1 -fsyntax-only -Wuninitialized -fsyntax-only -fblocks %s -verify
+#include <stdarg.h>
+
+@interface NSObject {} @end
+@class NSString;
+
+@interface NSException
++ (void)raise:(NSString *)name format:(NSString *)format, ...;
++ (void)raise:(NSString *)name format:(NSString *)format arguments:(va_list)argList;
+- (void)raise;
+@end
+
// Duplicated from uninit-variables.c.
// Test just to ensure the analysis is working.
int test1() {
@@ -25,3 +36,21 @@ void test3() {
}
}
+int test_abort_on_exceptions(int y, 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);
+ [NSException raise:@"Blah" format:@"Blah %@" arguments:alist];
+ return x;
+ }
+ else if (y == 2) {
+ [NSException raise:@"Blah" format:s];
+ return x;
+ }
+ else if (y == 3) {
+ [e raise];
+ return x;
+ }
+ return x; // expected-warning {{variable 'x' is uninitialized when used here}}
+}
OpenPOWER on IntegriCloud