[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