summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaObjC/format-strings-utf8.m
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/SemaObjC/format-strings-utf8.m')
-rw-r--r--clang/test/SemaObjC/format-strings-utf8.m27
1 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/SemaObjC/format-strings-utf8.m b/clang/test/SemaObjC/format-strings-utf8.m
new file mode 100644
index 00000000000..29ee5381425
--- /dev/null
+++ b/clang/test/SemaObjC/format-strings-utf8.m
@@ -0,0 +1,27 @@
+// REQUIRES: shell
+// RUN: env -i LC_ALL=C \
+// RUN: %clang_cc1 -triple x86_64-apple-darwin -Wformat-nonliteral -fsyntax-only -verify -Wno-objc-root-class %s
+
+#include <stdarg.h>
+int printf(const char *restrict, ...);
+int scanf(const char * restrict, ...);
+@class NSString, Protocol;
+extern void NSLog(NSString *format, ...);
+
+void testInvalidNoPrintable(int *a) {
+ printf("%\u25B9"); // expected-warning {{invalid conversion specifier '\u25b9'}}
+ printf("%\xE2\x96\xB9"); // expected-warning {{invalid conversion specifier '\u25b9'}}
+ printf("%\U00010348"); // expected-warning {{invalid conversion specifier '\U00010348'}}
+ printf("%\xF0\x90\x8D\x88"); // expected-warning {{invalid conversion specifier '\U00010348'}}
+ printf("%\xe2"); // expected-warning {{invalid conversion specifier '\xe2'}}
+ NSLog(@"%\u25B9"); // expected-warning {{invalid conversion specifier '\u25b9'}}
+ NSLog(@"%\xE2\x96\xB9"); // expected-warning {{invalid conversion specifier '\u25b9'}}
+ NSLog(@"%\U00010348"); // expected-warning {{invalid conversion specifier '\U00010348'}}
+ NSLog(@"%\xF0\x90\x8D\x88"); // expected-warning {{invalid conversion specifier '\U00010348'}}
+ NSLog(@"%\xe2"); // expected-warning {{input conversion stopped}} expected-warning {{invalid conversion specifier '\xe2'}}
+ scanf("%\u25B9", a); // expected-warning {{invalid conversion specifier '\u25b9'}}
+ scanf("%\xE2\x96\xB9", a); // expected-warning {{invalid conversion specifier '\u25b9'}}
+ scanf("%\U00010348", a); // expected-warning {{invalid conversion specifier '\U00010348'}}
+ scanf("%\xF0\x90\x8D\x88", a); // expected-warning {{invalid conversion specifier '\U00010348'}}
+ scanf("%\xe2", a); // expected-warning {{invalid conversion specifier '\xe2'}}
+}
OpenPOWER on IntegriCloud