]> granicus.if.org Git - clang/commitdiff
Start a more correct pattern for factoring out the name printing. Slowly
authorChandler Carruth <chandlerc@gmail.com>
Mon, 26 Sep 2011 00:37:30 +0000 (00:37 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 26 Sep 2011 00:37:30 +0000 (00:37 +0000)
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

lib/Frontend/TextDiagnosticPrinter.cpp

index f645bd4925c4263a55e3e22793cc2d7ebf167770..7edc8fc1ab33a691bf097d863df5817c2f8dcfcb 100644 (file)
@@ -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?