diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp index 5b3e77ee8d1ff466079b5239f4501a1788922c20..d6ecca8cbf90f4c66e2cddec9a89b4172a7d9609 100644 --- a/src/libs/cplusplus/FindUsages.cpp +++ b/src/libs/cplusplus/FindUsages.cpp @@ -59,6 +59,7 @@ void FindUsages::setGlobalNamespaceBinding(NamespaceBindingPtr globalNamespaceBi QList<int> FindUsages::operator()(Symbol *symbol, Identifier *id, AST *ast) { + _processed.clear(); _references.clear(); _declSymbol = symbol; _id = id; @@ -92,6 +93,9 @@ QString FindUsages::matchingLine(const Token &tk) const void FindUsages::reportResult(unsigned tokenIndex, const QList<Symbol *> &candidates) { + if (_processed.contains(tokenIndex)) + return; + const bool isStrongResult = checkCandidates(candidates); if (isStrongResult) @@ -100,6 +104,11 @@ void FindUsages::reportResult(unsigned tokenIndex, const QList<Symbol *> &candid void FindUsages::reportResult(unsigned tokenIndex) { + if (_processed.contains(tokenIndex)) + return; + + _processed.insert(tokenIndex); + const Token &tk = tokenAt(tokenIndex); const QString lineText = matchingLine(tk); diff --git a/src/libs/cplusplus/FindUsages.h b/src/libs/cplusplus/FindUsages.h index 9f82949380677777434fb57ec4a8b9e52b7ee5d2..667ad18485a310421a2372d08395b1781f3cbc75 100644 --- a/src/libs/cplusplus/FindUsages.h +++ b/src/libs/cplusplus/FindUsages.h @@ -114,6 +114,7 @@ private: QList<int> _references; LookupContext _previousContext; int _inSimpleDeclaration; + QSet<unsigned> _processed; }; } // end of namespace CPlusPlus