aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmllint
diff options
context:
space:
mode:
Diffstat (limited to 'tools/qmllint')
-rw-r--r--tools/qmllint/findunqualified.cpp14
-rw-r--r--tools/qmllint/findunqualified.h1
2 files changed, 11 insertions, 4 deletions
diff --git a/tools/qmllint/findunqualified.cpp b/tools/qmllint/findunqualified.cpp
index 0d1cbf5823..27939608d7 100644
--- a/tools/qmllint/findunqualified.cpp
+++ b/tools/qmllint/findunqualified.cpp
@@ -40,7 +40,7 @@
#include <private/qqmljsparser_p.h>
#include <private/qv4codegen_p.h>
-QDebug &operator<<(QDebug dbg, const QQmlJS::AST::SourceLocation &loc);
+QDebug operator<<(QDebug dbg, const QQmlJS::AST::SourceLocation &loc);
static QQmlJS::TypeDescriptionReader createReaderForFile(QString const &filename)
{
@@ -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 *)
@@ -449,9 +451,10 @@ void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::CaseBlock *)
leaveEnvironment();
}
-bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::Catch *)
+bool FindUnqualifiedIDVisitor::visit(QQmlJS::AST::Catch *catchStatement)
{
enterEnvironment(ScopeType::JSLexicalScope, "catch");
+ m_currentScope->insertJSIdentifier(catchStatement->patternElement->bindingIdentifier.toString(), QQmlJS::AST::VariableScope::Let);
return true;
}
@@ -568,6 +571,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];
@@ -767,7 +773,7 @@ void FindUnqualifiedIDVisitor::endVisit(QQmlJS::AST::UiObjectDefinition *)
leaveEnvironment();
}
-QDebug &operator<<(QDebug dbg, const QQmlJS::AST::SourceLocation &loc)
+QDebug operator<<(QDebug dbg, const QQmlJS::AST::SourceLocation &loc)
{
QDebugStateSaver saver(dbg);
dbg.nospace() << loc.startLine;
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;};