[Lldb-commits] [lldb] 11a5cae - [lldb][NFC] Refactor Fix-It filter for warnings

Raphael Isemann via lldb-commits lldb-commits at lists.llvm.org
Mon Mar 30 05:01:47 PDT 2020


Author: Raphael Isemann
Date: 2020-03-30T14:01:16+02:00
New Revision: 11a5caee2aeae2546213366e7fc54095bb8163b9

URL: https://github.com/llvm/llvm-project/commit/11a5caee2aeae2546213366e7fc54095bb8163b9
DIFF: https://github.com/llvm/llvm-project/commit/11a5caee2aeae2546213366e7fc54095bb8163b9.diff

LOG: [lldb][NFC] Refactor Fix-It filter for warnings

LLDB only automatically applies Fix-Its from errors, but not from warnings.

Currently we only store Fix-Its from errors and then later apply all Fix-Its
we stored. This moves the filter to the application phase, so that we now
store *all* Fix-Its but only apply Fix-Its from errors later on.

This is NFC preparation for an upcoming patch.

Added: 
    

Modified: 
    lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
index e5de4b4651df..b3880ce03b08 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
@@ -214,16 +214,12 @@ class ClangDiagnosticManagerAdapter : public clang::DiagnosticConsumer {
       auto new_diagnostic = std::make_unique<ClangDiagnostic>(
           stripped_output, severity, Info.getID());
 
-      // Don't store away warning fixits, since the compiler doesn't have
-      // enough context in an expression for the warning to be useful.
       // FIXME: Should we try to filter out FixIts that apply to our generated
       // code, and not the user's expression?
-      if (severity == eDiagnosticSeverityError) {
-        for (const clang::FixItHint &fixit : Info.getFixItHints()) {
-          if (fixit.isNull())
-            continue;
-          new_diagnostic->AddFixitHint(fixit);
-        }
+      for (const clang::FixItHint &fixit : Info.getFixItHints()) {
+        if (fixit.isNull())
+          continue;
+        new_diagnostic->AddFixitHint(fixit);
       }
 
       m_manager->AddDiagnostic(std::move(new_diagnostic));
@@ -1127,6 +1123,10 @@ bool ClangExpressionParser::RewriteExpression(
       continue;
     if (!diagnostic->HasFixIts())
       continue;
+    // Don't apply warning Fix-Its, since the compiler doesn't have enough
+    // context in an expression for the warning to be useful.
+    if (diagnostic->GetSeverity() != eDiagnosticSeverityError)
+      continue;
     for (const FixItHint &fixit : diagnostic->FixIts())
       ApplyFixIt(fixit, commit);
   }


        


More information about the lldb-commits mailing list