summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppmodelmanager.cpp
diff options
context:
space:
mode:
authorChristian Kamm <christian.d.kamm@nokia.com>2011-08-24 10:55:48 +0200
committerChristian Kamm <christian.d.kamm@nokia.com>2011-08-30 12:03:34 +0200
commit94a00259ac112fd5c6e0148fb3b02598d700698b (patch)
tree3e6ad7540a35e1ac1321f9ff382fb2c8476f3876 /src/plugins/cpptools/cppmodelmanager.cpp
parent2c7729eeac3a4093ebabfec97e1b0a9b0bb1632f (diff)
downloadqt-creator-94a00259ac112fd5c6e0148fb3b02598d700698b.tar.gz
C++/QmlJS: Warnings if C++ based QML type detection fails.
Change-Id: I1e206e09c4068cc541978ee148f9ed8c4138c249 Reviewed-on: http://codereview.qt.nokia.com/3579 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
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