aboutsummaryrefslogtreecommitdiff
path: root/lib/Frontend/TextDiagnosticPrinter.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2011-09-26 00:37:30 +0000
committerChandler Carruth <chandlerc@gmail.com>2011-09-26 00:37:30 +0000
commit761457827001290ca96bd2d5b05f182d21f28296 (patch)
tree08ea1a54e81fa74b1569d67971b4a024ad4e5a04 /lib/Frontend/TextDiagnosticPrinter.cpp
parenta629004ec698daec414b00d773f6a73d8465ef8d (diff)
Start a more correct pattern for factoring out the name printing. Slowly
I'm planning to switch a bunch of these over to use a raw_ostream instead of += on a string object. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140488 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/TextDiagnosticPrinter.cpp')
-rw-r--r--lib/Frontend/TextDiagnosticPrinter.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/Frontend/TextDiagnosticPrinter.cpp b/lib/Frontend/TextDiagnosticPrinter.cpp
index f645bd4925..7edc8fc1ab 100644
--- a/lib/Frontend/TextDiagnosticPrinter.cpp
+++ b/lib/Frontend/TextDiagnosticPrinter.cpp
@@ -1086,6 +1086,11 @@ static void PrintDiagnosticLevel(raw_ostream &OS,
OS.resetColor();
}
+static void PrintDiagnosticName(raw_ostream &OS, const DiagnosticInfo &Info) {
+ if (!DiagnosticIDs::isBuiltinNote(Info.getID()))
+ OS << " [" << DiagnosticIDs::getName(Info.getID()) << "]";
+}
+
void TextDiagnosticPrinter::HandleDiagnostic(DiagnosticsEngine::Level Level,
const DiagnosticInfo &Info) {
// Default implementation (Warnings/errors count).
@@ -1121,13 +1126,11 @@ void TextDiagnosticPrinter::HandleDiagnostic(DiagnosticsEngine::Level Level,
llvm::SmallString<100> OutStr;
Info.FormatDiagnostic(OutStr);
- if (DiagOpts->ShowNames &&
- !DiagnosticIDs::isBuiltinNote(Info.getID())) {
- OutStr += " [";
- OutStr += DiagnosticIDs::getName(Info.getID());
- OutStr += "]";
- }
-
+ llvm::raw_svector_ostream DiagMessageStream(OutStr);
+ if (DiagOpts->ShowNames)
+ PrintDiagnosticName(DiagMessageStream, Info);
+ DiagMessageStream.flush();
+
std::string OptionName;
if (DiagOpts->ShowOptionNames) {
// Was this a warning mapped to an error using -Werror or pragma?