diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2012-11-16 10:21:17 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2012-11-16 13:39:12 +0100 |
commit | ee553535c5ea0e8182b2ed6e2b5d6867f3b0899b (patch) | |
tree | b0dd9e1f831ada9f42a840b32f9a5d077fdab039 | |
parent | c1959cb6f6f30a52865c51c937e43de4dccfc817 (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.cpp | 5 | ||||
-rw-r--r-- | src/lib/language/identifiersearch.h | 1 |
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; |