This change came up while converting the diagnostics to use template diffing. It doesn't affect current messages, but will for upcoming changes.
On Mon, Jul 9, 2012 at 7:40 PM, Chandler Carruth <[email protected]>wrote: > Test case? > On Jul 9, 2012 6:47 PM, "Richard Trieu" <[email protected]> wrote: > >> 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; >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >> >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
