summaryrefslogtreecommitdiff
path: root/test/SemaObjC/format-strings-utf8.m
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2016-07-23 20:44:14 +0000
committerDimitry Andric <dim@FreeBSD.org>2016-07-23 20:44:14 +0000
commit2b6b257f4e5503a7a2675bdb8735693db769f75c (patch)
treee85e046ae7003fe3bcc8b5454cd0fa3f7407b470 /test/SemaObjC/format-strings-utf8.m
parentb4348ed0b7e90c0831b925fbee00b5f179a99796 (diff)
Notes
Diffstat (limited to 'test/SemaObjC/format-strings-utf8.m')
-rw-r--r--test/SemaObjC/format-strings-utf8.m45
1 files changed, 45 insertions, 0 deletions
diff --git a/test/SemaObjC/format-strings-utf8.m b/test/SemaObjC/format-strings-utf8.m
new file mode 100644
index 0000000000000..d4c21b11ea722
--- /dev/null
+++ b/test/SemaObjC/format-strings-utf8.m
@@ -0,0 +1,45 @@
+// REQUIRES: system-darwin
+// RUN: rm -f %t.log
+// RUN: env RC_DEBUG_OPTIONS=1 \
+// RUN: CC_LOG_DIAGNOSTICS=1 CC_LOG_DIAGNOSTICS_FILE=%t.log \
+// RUN: %clang -target x86_64-apple-darwin -fsyntax-only %s
+// RUN: FileCheck %s < %t.log
+
+#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) {
+ // CHECK: <string>invalid conversion specifier &apos;\u25b9&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\u25b9&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\U00010348&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\U00010348&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\xe2&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\u25b9&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\u25b9&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\U00010348&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\U00010348&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\xe2&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\u25b9&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\u25b9&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\U00010348&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\U00010348&apos;</string>
+ // CHECK: <string>invalid conversion specifier &apos;\xe2&apos;</string>
+ printf("%\u25B9");
+ printf("%\xE2\x96\xB9");
+ printf("%\U00010348");
+ printf("%\xF0\x90\x8D\x88");
+ printf("%\xe2");
+ NSLog(@"%\u25B9");
+ NSLog(@"%\xE2\x96\xB9");
+ NSLog(@"%\U00010348");
+ NSLog(@"%\xF0\x90\x8D\x88");
+ NSLog(@"%\xe2");
+ scanf("%\u25B9", a);
+ scanf("%\xE2\x96\xB9", a);
+ scanf("%\U00010348", a);
+ scanf("%\xF0\x90\x8D\x88", a);
+ scanf("%\xe2", a);
+}