diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-01-08 05:28:46 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-01-08 05:28:46 +0000 |
commit | bf4832cda8c3f8c8b7eff06be4594cac02ddf6b4 (patch) | |
tree | da227e3591636aa9c4090df3aed3a74a8535bb4d /clang/lib/Analysis/PrintfFormatString.cpp | |
parent | a322cae011c7949e6986bb4e8c9319569227b5d8 (diff) | |
download | bcm5719-llvm-bf4832cda8c3f8c8b7eff06be4594cac02ddf6b4.tar.gz bcm5719-llvm-bf4832cda8c3f8c8b7eff06be4594cac02ddf6b4.zip |
Add semantic checking that the "thousands grouping"
prefix in a printf format string is matched
with the appropriate conversion specifier.
llvm-svn: 123055
Diffstat (limited to 'clang/lib/Analysis/PrintfFormatString.cpp')
-rw-r--r-- | clang/lib/Analysis/PrintfFormatString.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/lib/Analysis/PrintfFormatString.cpp b/clang/lib/Analysis/PrintfFormatString.cpp index d99de2215dc..82ab14dbed6 100644 --- a/clang/lib/Analysis/PrintfFormatString.cpp +++ b/clang/lib/Analysis/PrintfFormatString.cpp @@ -590,6 +590,24 @@ bool PrintfSpecifier::hasValidLeftJustified() const { } } +bool PrintfSpecifier::hasValidThousandsGroupingPrefix() const { + if (!HasThousandsGrouping) + return true; + + switch (CS.getKind()) { + case ConversionSpecifier::dArg: + case ConversionSpecifier::iArg: + case ConversionSpecifier::uArg: + case ConversionSpecifier::fArg: + case ConversionSpecifier::FArg: + case ConversionSpecifier::gArg: + case ConversionSpecifier::GArg: + return true; + default: + return false; + } +} + bool PrintfSpecifier::hasValidPrecision() const { if (Precision.getHowSpecified() == OptionalAmount::NotSpecified) return true; |