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()