[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