aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2012-11-16 10:21:17 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2012-11-16 13:39:12 +0100
commitee553535c5ea0e8182b2ed6e2b5d6867f3b0899b (patch)
treeb0dd9e1f831ada9f42a840b32f9a5d077fdab039
parentc1959cb6f6f30a52865c51c937e43de4dccfc817 (diff)
IdentifierSearch: stop as soon as possible
By checking the stop condition in Visitor::preVisit we can stop the AST traversal much earlier. Change-Id: Ic9169c95f5e11c4ba040239e4349389a94bc335b Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--src/lib/language/identifiersearch.cpp5
-rw-r--r--src/lib/language/identifiersearch.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/src/lib/language/identifiersearch.cpp b/src/lib/language/identifiersearch.cpp
index 04f3cb1a5..7baa9aafc 100644
--- a/src/lib/language/identifiersearch.cpp
+++ b/src/lib/language/identifiersearch.cpp
@@ -50,6 +50,11 @@ void IdentifierSearch::add(const QString &name, bool *found)
m_requests.insert(name, found);
}
+bool IdentifierSearch::preVisit(QmlJS::AST::Node *)
+{
+ return m_numberOfFoundIds < m_requests.count();
+}
+
bool IdentifierSearch::visit(QmlJS::AST::IdentifierExpression *e)
{
bool *found = m_requests.value(e->name.toString());
diff --git a/src/lib/language/identifiersearch.h b/src/lib/language/identifiersearch.h
index dbeffefa1..b291ab05f 100644
--- a/src/lib/language/identifiersearch.h
+++ b/src/lib/language/identifiersearch.h
@@ -46,6 +46,7 @@ public:
void add(const QString &name, bool *found);
private:
+ bool preVisit(QmlJS::AST::Node *);
bool visit(QmlJS::AST::IdentifierExpression *e);
QMap<QString, bool *> m_requests;