]> granicus.if.org Git - clang/commit
If an object (such as a std::string) with an appropriate c_str() member function
authorRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 21 Jun 2012 01:08:35 +0000 (01:08 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 21 Jun 2012 01:08:35 +0000 (01:08 +0000)
commit7d96f6106bfbd85b1af06f34fdbf2834aad0e47e
tree936fde4c40fa12ef5ee5c66475acdaa65d779a21
parentcaba856a867c058f6c69ec0d5f3ea8169776fb9a
If an object (such as a std::string) with an appropriate c_str() member function
is passed to a variadic function in a position where a format string indicates
that c_str()'s return type is desired, provide a note suggesting that the user
may have intended to call the c_str() member.

Factor the non-POD-vararg checking out of DefaultVariadicArgumentPromotion and
move it to SemaChecking in order to facilitate this. Factor the call checking
out of function call checking and block call checking, and extend it to cover
constructor calls too.

Patch by Sam Panzer!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158887 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/DiagnosticSemaKinds.td
include/clang/Sema/Sema.h
lib/Sema/SemaChecking.cpp
lib/Sema/SemaDeclCXX.cpp
lib/Sema/SemaExpr.cpp
lib/Sema/SemaOverload.cpp
test/SemaCXX/printf-block.cpp [new file with mode: 0644]
test/SemaCXX/printf-cstr.cpp [new file with mode: 0644]