[cfe-commits] r159976 - in /cfe/trunk: include/clang/Basic/Diagnostic.h lib/AST/ASTDiagnostic.cpp lib/Basic/Diagnostic.cpp
Richard Trieu
rtrieu at google.com
Mon Jul 9 18:46:05 PDT 2012
Author: rtrieu
Date: Mon Jul 9 20:46:04 2012
New Revision: 159976
URL: http://llvm.org/viewvc/llvm-project?rev=159976&view=rev
Log:
Properly update the FormattedArgs vector when the template type diffing falls
back to regular type printing.
Modified:
cfe/trunk/include/clang/Basic/Diagnostic.h
cfe/trunk/lib/AST/ASTDiagnostic.cpp
cfe/trunk/lib/Basic/Diagnostic.cpp
Modified: cfe/trunk/include/clang/Basic/Diagnostic.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=159976&r1=159975&r2=159976&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/Diagnostic.h (original)
+++ cfe/trunk/include/clang/Basic/Diagnostic.h Mon Jul 9 20:46:04 2012
@@ -1286,6 +1286,8 @@
unsigned PrintFromType : 1;
unsigned ElideType : 1;
unsigned ShowColors : 1;
+ // The printer sets this variable to true if the template diff was used.
+ unsigned TemplateDiffUsed : 1;
};
/// Special character that the diagnostic printer will use to toggle the bold
Modified: cfe/trunk/lib/AST/ASTDiagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTDiagnostic.cpp?rev=159976&r1=159975&r2=159976&view=diff
==============================================================================
--- cfe/trunk/lib/AST/ASTDiagnostic.cpp (original)
+++ cfe/trunk/lib/AST/ASTDiagnostic.cpp Mon Jul 9 20:46:04 2012
@@ -254,7 +254,7 @@
switch (Kind) {
default: llvm_unreachable("unknown ArgumentKind");
case DiagnosticsEngine::ak_qualtype_pair: {
- const TemplateDiffTypes &TDT = *reinterpret_cast<TemplateDiffTypes*>(Val);
+ TemplateDiffTypes &TDT = *reinterpret_cast<TemplateDiffTypes*>(Val);
QualType FromType =
QualType::getFromOpaquePtr(reinterpret_cast<void*>(TDT.FromType));
QualType ToType =
@@ -264,6 +264,7 @@
TDT.PrintFromType, TDT.ElideType,
TDT.ShowColors, S)) {
NeedQuotes = !TDT.PrintTree;
+ TDT.TemplateDiffUsed = true;
break;
}
Modified: cfe/trunk/lib/Basic/Diagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Diagnostic.cpp?rev=159976&r1=159975&r2=159976&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Diagnostic.cpp (original)
+++ cfe/trunk/lib/Basic/Diagnostic.cpp Mon Jul 9 20:46:04 2012
@@ -821,6 +821,7 @@
TDT.ToType = getRawArg(ArgNo2);
TDT.ElideType = getDiags()->ElideType;
TDT.ShowColors = getDiags()->ShowColors;
+ TDT.TemplateDiffUsed = false;
intptr_t val = reinterpret_cast<intptr_t>(&TDT);
const char *ArgumentEnd = Argument + ArgumentLen;
@@ -859,6 +860,10 @@
Argument, ArgumentLen,
FormattedArgs.data(), FormattedArgs.size(),
OutStr, QualTypeVals);
+ if (!TDT.TemplateDiffUsed)
+ FormattedArgs.push_back(std::make_pair(DiagnosticsEngine::ak_qualtype,
+ TDT.FromType));
+
// Append middle text
FormatDiagnostic(FirstDollar + 1, SecondDollar, OutStr);
@@ -869,6 +874,10 @@
Argument, ArgumentLen,
FormattedArgs.data(), FormattedArgs.size(),
OutStr, QualTypeVals);
+ if (!TDT.TemplateDiffUsed)
+ FormattedArgs.push_back(std::make_pair(DiagnosticsEngine::ak_qualtype,
+ TDT.ToType));
+
// Append end text
FormatDiagnostic(SecondDollar + 1, Pipe, OutStr);
break;
More information about the cfe-commits
mailing list