From bd10e9b0202da72ea4a61532406ed5e1765f70dd Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 25 Nov 2015 15:11:23 +0100 Subject: [PATCH] Clang: Only apply fixits to the corresponding revision Change-Id: I4f4136369e1b261338d444670c212565e0c6b824 Reviewed-by: Nikolai Kosjar --- src/plugins/clangcodemodel/clangdiagnosticmanager.cpp | 5 +++++ src/plugins/clangcodemodel/clangdiagnosticmanager.h | 2 ++ .../clangcodemodel/clangeditordocumentprocessor.cpp | 5 +++++ .../clangcodemodel/clangeditordocumentprocessor.h | 2 ++ .../clangcodemodel/clangmodelmanagersupport.cpp | 11 +++++++++++ 5 files changed, 25 insertions(+) diff --git a/src/plugins/clangcodemodel/clangdiagnosticmanager.cpp b/src/plugins/clangcodemodel/clangdiagnosticmanager.cpp index 6c46c05b76e..13544424bd8 100644 --- a/src/plugins/clangcodemodel/clangdiagnosticmanager.cpp +++ b/src/plugins/clangcodemodel/clangdiagnosticmanager.cpp @@ -189,6 +189,11 @@ QList ClangDiagnosticManager::takeExtraSelections() return extraSelections; } +void ClangDiagnosticManager::clearDiagnosticsWithFixIts() +{ + m_fixItdiagnostics.clear(); +} + void ClangDiagnosticManager::generateEditorSelections() { m_extraSelections.clear(); diff --git a/src/plugins/clangcodemodel/clangdiagnosticmanager.h b/src/plugins/clangcodemodel/clangdiagnosticmanager.h index 85ba1dde499..8007fc47fe8 100644 --- a/src/plugins/clangcodemodel/clangdiagnosticmanager.h +++ b/src/plugins/clangcodemodel/clangdiagnosticmanager.h @@ -56,6 +56,8 @@ public: const QVector &diagnosticsWithFixIts() const; QList takeExtraSelections(); + void clearDiagnosticsWithFixIts(); + private: QString filePath() const; void filterDiagnostics(const QVector &diagnostics); diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index 341f541255c..5739960751c 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -224,6 +224,11 @@ ClangBackEnd::FileContainer ClangEditorDocumentProcessor::fileContainer() const return fileContainer(m_projectPart.data()); } +void ClangEditorDocumentProcessor::clearDiagnosticsWithFixIts() +{ + m_diagnosticManager.clearDiagnosticsWithFixIts(); +} + ClangEditorDocumentProcessor *ClangEditorDocumentProcessor::get(const QString &filePath) { return qobject_cast(BaseEditorDocumentProcessor::get(filePath)); diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h index 575725e8738..ded0258210f 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h @@ -81,6 +81,8 @@ public: ClangBackEnd::FileContainer fileContainer() const; + void clearDiagnosticsWithFixIts(); + public: static ClangEditorDocumentProcessor *get(const QString &filePath); diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 06cda925ee1..26780648305 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -197,6 +197,15 @@ void ModelManagerSupportClang::onCppDocumentReloadFinishedOnTranslationUnit(bool } } +namespace { +void clearDiagnosticFixIts(const QString &filePath) +{ + auto processor = ClangEditorDocumentProcessor::get(filePath); + if (processor) + processor->clearDiagnosticsWithFixIts(); +} +} + void ModelManagerSupportClang::onCppDocumentContentsChangedOnTranslationUnit(int position, int /*charsRemoved*/, int /*charsAdded*/) @@ -206,6 +215,8 @@ void ModelManagerSupportClang::onCppDocumentContentsChangedOnTranslationUnit(int m_ipcCommunicator.updateChangeContentStartPosition(document->filePath().toString(), position); m_ipcCommunicator.updateTranslationUnitIfNotCurrentDocument(document); + + clearDiagnosticFixIts(document->filePath().toString()); } void ModelManagerSupportClang::onCppDocumentAboutToReloadOnUnsavedFile()