From ef42f53f22ebc7be3df3ee2b6ead7fc7e796328e Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed Date: Tue, 5 Mar 2013 14:35:15 +0100 Subject: [PATCH] qmljs: do not show warnings for not fully supported languages Change-Id: Ie153caefcbb0f5d6d627697fd324d0cd0e3fa31f Reviewed-by: Joerg Bornemann --- src/libs/qmljs/qmljsdocument.cpp | 18 ++++++++++++++ src/libs/qmljs/qmljsdocument.h | 1 + src/plugins/qmljseditor/qmljseditor.cpp | 4 +++- .../qmljseditor/qmljssemantichighlighter.cpp | 23 ++++++++++-------- src/plugins/qmljseditor/qmltaskmanager.cpp | 24 ++++++++++--------- 5 files changed, 48 insertions(+), 22 deletions(-) diff --git a/src/libs/qmljs/qmljsdocument.cpp b/src/libs/qmljs/qmljsdocument.cpp index 657e96b9b67..13e9a431168 100644 --- a/src/libs/qmljs/qmljsdocument.cpp +++ b/src/libs/qmljs/qmljsdocument.cpp @@ -98,6 +98,24 @@ bool Document::isQmlLikeLanguage(Document::Language language) } } +bool Document::isFullySupportedLanguage(Document::Language language) +{ + switch (language) { + case JavaScriptLanguage: + case JsonLanguage: + case QmlLanguage: + case QmlQtQuick1Language: + case QmlQtQuick2Language: + return true; + case UnknownLanguage: + case QmlQbsLanguage: + case QmlProjectLanguage: + case QmlTypeInfoLanguage: + break; + } + return false; +} + Document::Document(const QString &fileName, Language language) : _engine(0) , _ast(0) diff --git a/src/libs/qmljs/qmljsdocument.h b/src/libs/qmljs/qmljsdocument.h index dac5c1d675b..461a5a6fd16 100644 --- a/src/libs/qmljs/qmljsdocument.h +++ b/src/libs/qmljs/qmljsdocument.h @@ -65,6 +65,7 @@ public: }; static bool isQmlLikeLanguage(Language languge); + static bool isFullySupportedLanguage(Language language); protected: Document(const QString &fileName, Language language); diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 1314e98fed5..c35bb34c908 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -667,11 +667,13 @@ void QmlJSTextEditorWidget::onDocumentUpdated(QmlJS::Document::Ptr doc) m_futureSemanticInfoRevision = doc->editorRevision(); m_semanticInfoUpdater->update(doc, m_modelManager->snapshot()); setExtraSelections(CodeWarningsSelection, QList()); - } else { + } else if (Document::isFullySupportedLanguage(doc->language())) { // show parsing errors QList selections; appendExtraSelectionsForMessages(&selections, doc->diagnosticMessages(), document()); setExtraSelections(CodeWarningsSelection, selections); + } else { + setExtraSelections(CodeWarningsSelection, QList()); } } diff --git a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp index e31b900a36e..5b040450f16 100644 --- a/src/plugins/qmljseditor/qmljssemantichighlighter.cpp +++ b/src/plugins/qmljseditor/qmljssemantichighlighter.cpp @@ -429,17 +429,20 @@ protected: private: void run() { - int nMessages = m_scopeChain.document()->diagnosticMessages().size() - + m_semanticInfo.semanticMessages.size() - + m_semanticInfo.staticAnalysisMessages.size(); - m_delayedUses.reserve(nMessages); - m_diagnosticRanges.reserve(nMessages); - m_extraFormats.reserve(nMessages); - addMessages(m_scopeChain.document()->diagnosticMessages(), m_scopeChain.document()); - addMessages(m_semanticInfo.semanticMessages, m_semanticInfo.document); - addMessages(m_semanticInfo.staticAnalysisMessages, m_semanticInfo.document); + int nMessages = 0; + if (Document::isFullySupportedLanguage(m_scopeChain.document()->language())) { + nMessages = m_scopeChain.document()->diagnosticMessages().size() + + m_semanticInfo.semanticMessages.size() + + m_semanticInfo.staticAnalysisMessages.size(); + m_delayedUses.reserve(nMessages); + m_diagnosticRanges.reserve(nMessages); + m_extraFormats.reserve(nMessages); + addMessages(m_scopeChain.document()->diagnosticMessages(), m_scopeChain.document()); + addMessages(m_semanticInfo.semanticMessages, m_semanticInfo.document); + addMessages(m_semanticInfo.staticAnalysisMessages, m_semanticInfo.document); - qSort(m_delayedUses.begin(), m_delayedUses.end(), sortByLinePredicate); + qSort(m_delayedUses.begin(), m_delayedUses.end(), sortByLinePredicate); + } m_currentDelayedUse = 0; m_semanticHighlighter.reportMessagesInfo(m_diagnosticRanges, m_extraFormats); diff --git a/src/plugins/qmljseditor/qmltaskmanager.cpp b/src/plugins/qmljseditor/qmltaskmanager.cpp index f6ca1826572..88efb0cb736 100644 --- a/src/plugins/qmljseditor/qmltaskmanager.cpp +++ b/src/plugins/qmljseditor/qmltaskmanager.cpp @@ -112,19 +112,21 @@ void QmlTaskManager::collectMessages( FileErrorMessages result; result.fileName = fileName; - result.tasks = convertToTasks(document->diagnosticMessages(), - Utils::FileName::fromString(fileName), - Core::Id(Constants::TASK_CATEGORY_QML)); + if (Document::isFullySupportedLanguage(document->language())) { + result.tasks = convertToTasks(document->diagnosticMessages(), + Utils::FileName::fromString(fileName), + Core::Id(Constants::TASK_CATEGORY_QML)); - if (updateSemantic) { - result.tasks += convertToTasks(linkMessages.value(fileName), - Utils::FileName::fromString(fileName), - Core::Id(Constants::TASK_CATEGORY_QML_ANALYSIS)); + if (updateSemantic) { + result.tasks += convertToTasks(linkMessages.value(fileName), + Utils::FileName::fromString(fileName), + Core::Id(Constants::TASK_CATEGORY_QML_ANALYSIS)); - Check checker(document, context); - result.tasks += convertToTasks(checker(), - Utils::FileName::fromString(fileName), - Core::Id(Constants::TASK_CATEGORY_QML_ANALYSIS)); + Check checker(document, context); + result.tasks += convertToTasks(checker(), + Utils::FileName::fromString(fileName), + Core::Id(Constants::TASK_CATEGORY_QML_ANALYSIS)); + } } if (!result.tasks.isEmpty())