summaryrefslogtreecommitdiff
path: root/src/libs/qmljs/qmljscheck.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/qmljs/qmljscheck.cpp')
-rw-r--r--src/libs/qmljs/qmljscheck.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 64cb19f2ed..a54371603c 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -313,6 +313,12 @@ protected:
_state = ReachesEnd;
return false;
}
+
+ void throwRecursionDepthError() override
+ {
+ // handle differently? ReturnOrThrow declares unreachable code, but probably leads to bogus warnings
+ _state = ReachesEnd;
+ }
};
class MarkUnreachableCode : protected ReachesEndCheck
@@ -352,6 +358,11 @@ protected:
if (message.isValid())
_messages += message;
}
+
+ void throwRecursionDepthError() override
+ {
+ _messages.append(Message(ErrHitMaximumRecursion, SourceLocation()));
+ }
};
class DeclarationsCheck : protected Visitor
@@ -510,6 +521,11 @@ protected:
--_block;
}
+ void throwRecursionDepthError() override
+ {
+ addMessage(ErrHitMaximumRecursion, SourceLocation());
+ }
+
private:
void addMessage(StaticAnalysis::Type type, const SourceLocation &loc, const QString &arg1 = QString())
{
@@ -808,6 +824,11 @@ void Check::endVisit(UiObjectInitializer *)
m_idStack.pop();
}
+void Check::throwRecursionDepthError()
+{
+ addMessage(ErrHitMaximumRecursion, SourceLocation());
+}
+
void Check::checkProperty(UiQualifiedId *qualifiedId)
{
const QString id = toString(qualifiedId);