Move one more diagnostic into the new -Wformat-pedantic group.

This was apparently overlooked in r231211.

llvm-svn: 231242
This commit is contained in:
Daniel Jasper 2015-03-04 14:18:20 +00:00
parent b37b95ed3e
commit ad8d849f48
2 changed files with 20 additions and 8 deletions

View File

@ -3768,16 +3768,18 @@ CheckPrintfHandler::checkFormatExpr(const analyze_printf::PrintfSpecifier &FS,
CharSourceRange SpecRange = getSpecifierRange(StartSpecifier, SpecifierLen);
if (IntendedTy == ExprTy && !ShouldNotPrintDirectly) {
unsigned diag = diag::warn_format_conversion_argument_type_mismatch;
if (match == analyze_format_string::ArgType::NoMatchPedantic) {
diag = diag::warn_format_conversion_argument_type_mismatch_pedantic;
}
// In this case, the specifier is wrong and should be changed to match
// the argument.
EmitFormatDiagnostic(
S.PDiag(diag::warn_format_conversion_argument_type_mismatch)
<< AT.getRepresentativeTypeName(S.Context) << IntendedTy << IsEnum
<< E->getSourceRange(),
E->getLocStart(),
/*IsStringLocation*/false,
SpecRange,
FixItHint::CreateReplacement(SpecRange, os.str()));
EmitFormatDiagnostic(S.PDiag(diag)
<< AT.getRepresentativeTypeName(S.Context)
<< IntendedTy << IsEnum << E->getSourceRange(),
E->getLocStart(),
/*IsStringLocation*/ false, SpecRange,
FixItHint::CreateReplacement(SpecRange, os.str()));
} else {
// The canonical type for formatting this value is different from the

View File

@ -0,0 +1,10 @@
// RUN: %clang_cc1 -fsyntax-only -verify -Wformat -std=c++11 %s
// expected-no-diagnostics
extern "C" {
extern int scanf(const char *restrict, ...);
extern int printf(const char *restrict, ...);
}
void f(char *c) {
printf("%p", c);
}