diff options
-rw-r--r-- | clang/lib/Analysis/FormatString.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaCXX/format-strings.cpp | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/Analysis/FormatString.cpp b/clang/lib/Analysis/FormatString.cpp index a0633c80d3c..30bfe4bf884 100644 --- a/clang/lib/Analysis/FormatString.cpp +++ b/clang/lib/Analysis/FormatString.cpp @@ -373,7 +373,7 @@ QualType ArgTypeResult::getRepresentativeType(ASTContext &C) const { std::string ArgTypeResult::getRepresentativeTypeName(ASTContext &C) const { std::string S = getRepresentativeType(C).getAsString(); - if (Name) + if (Name && S != Name) return std::string("'") + Name + "' (aka '" + S + "')"; return std::string("'") + S + "'"; } diff --git a/clang/test/SemaCXX/format-strings.cpp b/clang/test/SemaCXX/format-strings.cpp index 2011a71b481..4f5b74d170d 100644 --- a/clang/test/SemaCXX/format-strings.cpp +++ b/clang/test/SemaCXX/format-strings.cpp @@ -13,3 +13,7 @@ void f(char **sp, float *fp) { printf("%a", 1.0); scanf("%afoobar", fp); } + +void g() { + printf("%ls", "foo"); // expected-warning{{format specifies type 'wchar_t *' but the argument has type 'const char *'}} +} |