From dc195d005fc3a337536dd7a912a83dccfa35231f Mon Sep 17 00:00:00 2001 From: Bruno Cardoso Lopes Date: Tue, 29 Mar 2016 18:38:44 +0000 Subject: [PATCH] [Sema] Attempt to fix tests for utf-8 invalid format string specifiers Followup from r264752. Attempt to appease buildbots: http://lab.llvm.org:8011/builders/clang-ppc64be-linux/builds/2882 http://lab.llvm.org:8011/builders/clang-s390x-linux/builds/2619 llvm-svn: 264765 --- clang/test/Sema/format-strings-scanf.c | 8 -------- clang/test/Sema/format-strings.c | 8 -------- clang/test/SemaObjC/format-strings-objc.m | 9 --------- clang/test/SemaObjC/format-strings-utf8.m | 27 +++++++++++++++++++++++++++ 4 files changed, 27 insertions(+), 25 deletions(-) create mode 100644 clang/test/SemaObjC/format-strings-utf8.m diff --git a/clang/test/Sema/format-strings-scanf.c b/clang/test/Sema/format-strings-scanf.c index ee2be0e..7a92842 100644 --- a/clang/test/Sema/format-strings-scanf.c +++ b/clang/test/Sema/format-strings-scanf.c @@ -183,11 +183,3 @@ void check_conditional_literal(char *s, int *i) { scanf(i ? "%d" : "%d", i, s); // expected-warning{{data argument not used}} scanf(i ? "%s" : "%d", s); // expected-warning{{format specifies type 'int *'}} } - -void testInvalidNoPrintable(int *a) { - 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'}} -} diff --git a/clang/test/Sema/format-strings.c b/clang/test/Sema/format-strings.c index 253aa57..5559710 100644 --- a/clang/test/Sema/format-strings.c +++ b/clang/test/Sema/format-strings.c @@ -642,14 +642,6 @@ void test_qualifiers(volatile int *vip, const int *cip, printf("%n", (cip_t)0); // expected-warning{{format specifies type 'int *' but the argument has type 'cip_t' (aka 'const int *')}} } -void testInvalidNoPrintable() { - 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'}} -} - #pragma GCC diagnostic ignored "-Wformat-nonliteral" #pragma GCC diagnostic warning "-Wformat-security" // diff --git a/clang/test/SemaObjC/format-strings-objc.m b/clang/test/SemaObjC/format-strings-objc.m index 2ac68cd..d81f166 100644 --- a/clang/test/SemaObjC/format-strings-objc.m +++ b/clang/test/SemaObjC/format-strings-objc.m @@ -264,12 +264,3 @@ void testObjCModifierFlags() { NSLog(@"%2$[tt]@ %1$[tt]@", @"Foo", @"Bar"); // no-warning NSLog(@"%2$[tt]@ %1$[tt]s", @"Foo", @"Bar"); // expected-warning {{object format flags cannot be used with 's' conversion specifier}} } - -// Test Objective-C invalid no printable specifiers -void testObjcInvalidNoPrintable(int *a) { - 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'}} -} diff --git a/clang/test/SemaObjC/format-strings-utf8.m b/clang/test/SemaObjC/format-strings-utf8.m new file mode 100644 index 0000000..29ee538 --- /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 +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'}} +} -- 2.7.4