]> granicus.if.org Git - clang/commitdiff
writeARCDiagsToPlist(): make sure all diag levels get handled
authorAlp Toker <alp@nuanti.com>
Sun, 6 Jul 2014 04:27:03 +0000 (04:27 +0000)
committerAlp Toker <alp@nuanti.com>
Sun, 6 Jul 2014 04:27:03 +0000 (04:27 +0000)
Handle 'remark' level diagnostics as warnings instead of supplemental notes,
and use a covered switch to ensure the mapping is kept up to date.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212385 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ARCMigrate/PlistReporter.cpp

index 263241761f26c4bf333294c34006d725a7431c3e..cd55625554f71bbbda2adc375d164fa8699c9158 100644 (file)
@@ -16,6 +16,22 @@ using namespace clang;
 using namespace arcmt;
 using namespace markup;
 
+static StringRef getLevelName(DiagnosticsEngine::Level Level) {
+  switch (Level) {
+  case DiagnosticsEngine::Ignored:
+    llvm_unreachable("ignored");
+  case DiagnosticsEngine::Note:
+    return "note";
+  case DiagnosticsEngine::Remark:
+  case DiagnosticsEngine::Warning:
+    return "warning";
+  case DiagnosticsEngine::Fatal:
+  case DiagnosticsEngine::Error:
+    return "error";
+  }
+  llvm_unreachable("Invalid DiagnosticsEngine level!");
+}
+
 void arcmt::writeARCDiagsToPlist(const std::string &outPath,
                                  ArrayRef<StoredDiagnostic> diags,
                                  SourceManager &SM,
@@ -84,12 +100,7 @@ void arcmt::writeARCDiagsToPlist(const std::string &outPath,
     EmitString(o, DiagIDs.getCategoryNameFromID(
                           DiagIDs.getCategoryNumberForDiag(D.getID()))) << '\n';
     o << "   <key>type</key>";
-    if (D.getLevel() >= DiagnosticsEngine::Error)
-      EmitString(o, "error") << '\n';
-    else if (D.getLevel() == DiagnosticsEngine::Warning)
-      EmitString(o, "warning") << '\n';
-    else
-      EmitString(o, "note") << '\n';
+    EmitString(o, getLevelName(D.getLevel())) << '\n';
 
     // Output the location of the bug.
     o << "  <key>location</key>\n";