From 56d91b49b13fe55c918afbda19f6165b5fbff87a Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Wed, 15 Aug 2012 20:02:54 +0000 Subject: Vendor import of clang trunk r161861: http://llvm.org/svn/llvm-project/cfe/trunk@161861 --- test/SemaCXX/printf-block.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 test/SemaCXX/printf-block.cpp (limited to 'test/SemaCXX/printf-block.cpp') diff --git a/test/SemaCXX/printf-block.cpp b/test/SemaCXX/printf-block.cpp new file mode 100644 index 000000000000..4a580037e731 --- /dev/null +++ b/test/SemaCXX/printf-block.cpp @@ -0,0 +1,18 @@ +// RUN: %clang_cc1 -fsyntax-only -fblocks -Wformat -verify %s -Wno-error=non-pod-varargs + +int (^block) (int, const char *,...) __attribute__((__format__(__printf__,2,3))) = ^ __attribute__((__format__(__printf__,2,3))) (int arg, const char *format,...) {return 5;}; + +class HasNoCStr { + const char *str; + public: + HasNoCStr(const char *s): str(s) { } + const char *not_c_str() {return str;} +}; + +void test_block() { + const char str[] = "test"; + HasNoCStr hncs(str); + int n = 4; + block(n, "%s %d", str, n); // no-warning + block(n, "%s %s", hncs, n); // expected-warning{{cannot pass non-POD object of type 'HasNoCStr' to variadic block; expected type from format string was 'char *'}} expected-warning{{format specifies type 'char *' but the argument has type 'int'}} +} -- cgit v1.2.3