diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2019-08-16 10:14:49 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2019-08-19 09:58:31 +0200 |
commit | fc820ca49432ca8e621a242d9ce5925012a10c7d (patch) | |
tree | d980c184e249661ce26f3cc17624dbec773dd534 /tools | |
parent | 7629c8de575205ba34b2be42e4c0aebaabb6876a (diff) |
qmllint: Fail on recursion depth errors
Change-Id: I815f82ed8c005ed83ceecff6ce80106a9ad9b21d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qmllint/findunqualified.cpp | 7 | ||||
-rw-r--r-- | tools/qmllint/findunqualified.h | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/tools/qmllint/findunqualified.cpp b/tools/qmllint/findunqualified.cpp index 0d1cbf5823..0452dae627 100644 --- a/tools/qmllint/findunqualified.cpp +++ b/tools/qmllint/findunqualified.cpp @@ -333,7 +333,9 @@ void FindUnqualifiedIDVisitor::importExportedNames(QStringRef prefix, QString na void FindUnqualifiedIDVisitor::throwRecursionDepthError() { - return; + m_colorOut.write(QStringLiteral("Error"), Error); + m_colorOut.write(QStringLiteral("Maximum statement or expression depth exceeded"), Error); + m_visitFailed = true; } bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::UiProgram *) @@ -568,6 +570,9 @@ FindUnqualifiedIDVisitor::~FindUnqualifiedIDVisitor() = default; bool FindUnqualifiedIDVisitor::check() { + if (m_visitFailed) + return false; + // now that all ids are known, revisit any Connections whose target were perviously unknown for (auto const& outstandingConnection: m_outstandingConnections) { auto metaObject = m_qmlid2meta[outstandingConnection.targetName]; diff --git a/tools/qmllint/findunqualified.h b/tools/qmllint/findunqualified.h index 8fc8257bef..181f42f265 100644 --- a/tools/qmllint/findunqualified.h +++ b/tools/qmllint/findunqualified.h @@ -59,6 +59,7 @@ private: QSet<QPair<QString, QString>> m_alreadySeenImports; QSet<QString> m_unknownImports; ColorOutput m_colorOut; + bool m_visitFailed = false; struct OutstandingConnection {QString targetName; ScopeTree *scope; QQmlJS::AST::UiObjectDefinition *uiod;}; |