diff options
author | Christian Stenger <christian.stenger@qt.io> | 2017-03-16 07:41:25 +0100 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2017-03-16 08:02:48 +0000 |
commit | 3d6b1089711227acc432c404729f8cb5a431d2cc (patch) | |
tree | cc7d8583c2e876ae17d388255e84a16d11a4769e /src/plugins/autotest/quick/quicktestparser.cpp | |
parent | 5c3fce7f974e7efa7e44288275afc38e99c725e3 (diff) | |
download | qt-creator-3d6b1089711227acc432c404729f8cb5a431d2cc.tar.gz |
AutoTest: Fix handling of subtyping TestCase again
We need a more present snapshot when inspecting the AST of QML files
we need to process.
Due to handling all problematic accesses inside the QmlJS model by
guarding it with mutexes it is no problem even when parsing multi threaded.
The former fix collided with another patch and therefore went in
without fixing the issue.
Task-number: QTCREATORBUG-17787
Change-Id: I460bae4b09cdc9a0cd38bc3383fd593c3abdfaad
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
Diffstat (limited to 'src/plugins/autotest/quick/quicktestparser.cpp')
-rw-r--r-- | src/plugins/autotest/quick/quicktestparser.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/plugins/autotest/quick/quicktestparser.cpp b/src/plugins/autotest/quick/quicktestparser.cpp index f6b7cf7817..c3440ce15d 100644 --- a/src/plugins/autotest/quick/quicktestparser.cpp +++ b/src/plugins/autotest/quick/quicktestparser.cpp @@ -165,7 +165,6 @@ static QList<QmlJS::Document::Ptr> scanDirectoryForQuickTestQmlFiles(const QStri } static bool checkQmlDocumentForQuickTestCode(QFutureInterface<TestParseResultPtr> futureInterface, - const QmlJS::Snapshot &snapshot, const QmlJS::Document::Ptr &qmlJSDoc, const Core::Id &id, const QString &proFile = QString()) @@ -174,6 +173,7 @@ static bool checkQmlDocumentForQuickTestCode(QFutureInterface<TestParseResultPtr return false; QmlJS::AST::Node *ast = qmlJSDoc->ast(); QTC_ASSERT(ast, return false); + QmlJS::Snapshot snapshot = QmlJS::ModelManagerInterface::instance()->snapshot(); TestQmlVisitor qmlVisitor(qmlJSDoc, snapshot); QmlJS::AST::Node::accept(ast, &qmlVisitor); if (!qmlVisitor.isValid()) @@ -212,7 +212,6 @@ static bool checkQmlDocumentForQuickTestCode(QFutureInterface<TestParseResultPtr } static bool handleQtQuickTest(QFutureInterface<TestParseResultPtr> futureInterface, - const QmlJS::Snapshot &snapshot, CPlusPlus::Document::Ptr document, const Core::Id &id) { @@ -233,7 +232,7 @@ static bool handleQtQuickTest(QFutureInterface<TestParseResultPtr> futureInterfa const QList<QmlJS::Document::Ptr> qmlDocs = scanDirectoryForQuickTestQmlFiles(srcDir); bool result = false; for (const QmlJS::Document::Ptr &qmlJSDoc : qmlDocs) - result |= checkQmlDocumentForQuickTestCode(futureInterface, snapshot, qmlJSDoc, id, proFile); + result |= checkQmlDocumentForQuickTestCode(futureInterface, qmlJSDoc, id, proFile); return result; } @@ -280,14 +279,14 @@ bool QuickTestParser::processDocument(QFutureInterface<TestParseResultPtr> futur if (proFile.isEmpty()) return false; QmlJS::Document::Ptr qmlJSDoc = m_qmlSnapshot.document(fileName); - return checkQmlDocumentForQuickTestCode(futureInterface, m_qmlSnapshot, qmlJSDoc, id(), proFile); + return checkQmlDocumentForQuickTestCode(futureInterface, qmlJSDoc, id(), proFile); } if (!m_cppSnapshot.contains(fileName) || !selectedForBuilding(fileName)) return false; CPlusPlus::Document::Ptr document = m_cppSnapshot.find(fileName).value(); if (!includesQtQuickTest(document, m_cppSnapshot)) return false; - return handleQtQuickTest(futureInterface, m_qmlSnapshot, document, id()); + return handleQtQuickTest(futureInterface, document, id()); } } // namespace Internal |