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>
This commit is contained in:
Christian Kamm
2011-08-24 10:55:48 +02:00
parent 2c7729eeac
commit 94a00259ac
6 changed files with 102 additions and 15 deletions

View File

@@ -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