aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2019-08-16 10:14:49 +0200
committerUlf Hermann <ulf.hermann@qt.io>2019-08-19 09:58:31 +0200
commitfc820ca49432ca8e621a242d9ce5925012a10c7d (patch)
treed980c184e249661ce26f3cc17624dbec773dd534 /tools
parent7629c8de575205ba34b2be42e4c0aebaabb6876a (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.cpp7
-rw-r--r--tools/qmllint/findunqualified.h1
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;};