summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppmodelmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
-rw-r--r--src/plugins/cpptools/cppmodelmanager.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp
index 79c96c1478..9a3fca3935 100644
--- a/src/plugins/cpptools/cppmodelmanager.cpp
+++ b/src/plugins/cpptools/cppmodelmanager.cpp
@@ -1060,7 +1060,9 @@ void CppModelManager::onDocumentUpdated(Document::Ptr doc)
}
#else
QSet<int> lines;
- foreach (const Document::DiagnosticMessage &m, doc->diagnosticMessages()) {
+ QList<Document::DiagnosticMessage> messages = doc->diagnosticMessages();
+ messages += extraDiagnostics(doc->fileName());
+ foreach (const Document::DiagnosticMessage &m, messages) {
if (m.fileName() != fileName)
continue;
else if (lines.contains(m.line()))
@@ -1289,5 +1291,34 @@ void CppModelManager::finishedRefreshingSourceFiles(const QStringList &files)
emit sourceFilesRefreshed(files);
}
+
+void CppModelManager::setExtraDiagnostics(const QString &fileName, int kind,
+ const QList<Document::DiagnosticMessage> &diagnostics)
+{
+ {
+ QMutexLocker locker(&protectExtraDiagnostics);
+ m_extraDiagnostics[fileName].insert(kind, diagnostics);
+ }
+ Document::Ptr doc;
+ {
+ QMutexLocker locker(&protectSnapshot);
+ doc = m_snapshot.document(fileName);
+ }
+ if (doc)
+ emit documentUpdated(doc);
+}
+
+QList<Document::DiagnosticMessage> CppModelManager::extraDiagnostics(const QString &fileName, int kind) const
+{
+ QMutexLocker locker(&protectExtraDiagnostics);
+ if (kind == -1) {
+ QList<Document::DiagnosticMessage> messages;
+ foreach (const QList<Document::DiagnosticMessage> &list, m_extraDiagnostics.value(fileName))
+ messages += list;
+ return messages;
+ }
+ return m_extraDiagnostics.value(fileName).value(kind);
+}
+
#endif