From b673c65cb2e98fb10fca106165a3df31d08be8b9 Mon Sep 17 00:00:00 2001 From: Aaron Ballman Date: Thu, 23 Apr 2015 16:14:19 +0000 Subject: Extend format specifier checking to include field function pointers in addition to variable function pointers. Addresses PR21082. llvm-svn: 235606 --- clang/test/SemaCXX/format-strings.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'clang/test') diff --git a/clang/test/SemaCXX/format-strings.cpp b/clang/test/SemaCXX/format-strings.cpp index 41775708feb..fa7251d0dd7 100644 --- a/clang/test/SemaCXX/format-strings.cpp +++ b/clang/test/SemaCXX/format-strings.cpp @@ -133,3 +133,18 @@ namespace Templates { } } +namespace implicit_this_tests { +struct t { + void func1(const char *, ...) __attribute__((__format__(printf, 1, 2))); // expected-error {{format attribute cannot specify the implicit this argument as the format string}} + void (*func2)(const char *, ...) __attribute__((__format__(printf, 1, 2))); + static void (*func3)(const char *, ...) __attribute__((__format__(printf, 1, 2))); + static void func4(const char *, ...) __attribute__((__format__(printf, 1, 2))); +}; + +void f() { + t t1; + t1.func2("Hello %s"); // expected-warning {{more '%' conversions than data arguments}} + t::func3("Hello %s"); // expected-warning {{more '%' conversions than data arguments}} + t::func4("Hello %s"); // expected-warning {{more '%' conversions than data arguments}} +} +} -- cgit v1.2.3