From ee3de5de886c978be520907d85a6beaaeac940f7 Mon Sep 17 00:00:00 2001 From: eidheim Date: Tue, 8 Aug 2017 10:51:59 +0200 Subject: [PATCH] Simplified Tokens::get_similar_token_offsets --- src/Tokens.cc | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/src/Tokens.cc b/src/Tokens.cc index 635a48a..7d030f0 100644 --- a/src/Tokens.cc +++ b/src/Tokens.cc @@ -22,34 +22,20 @@ clangmm::Tokens::~Tokens() { //This works across TranslationUnits. Similar tokens defined as tokens with equal canonical cursors. std::vector > clangmm::Tokens::get_similar_token_offsets(Cursor::Kind kind, const std::string &spelling, const std::unordered_set &usrs) { - // Special case for virtual and override functions - if(kind==Cursor::Kind::CXXMethod) { - std::vector > offsets; - for(auto &token: *this) { - if(token.is_identifier()) { - auto referenced=token.get_cursor().get_referenced(); - if(referenced && referenced.get_kind()==Cursor::Kind::CXXMethod && spelling==token.get_spelling()) { - auto referenced_usrs=referenced.get_all_usr_extended(); - for(auto &usr: referenced_usrs) { - if(usrs.count(usr)) { - offsets.emplace_back(token.offsets); - break; - } + std::vector > offsets; + for(auto &token: *this) { + if(token.is_identifier()) { + auto referenced=token.get_cursor().get_referenced(); + if(referenced && (kind!=Cursor::Kind::CXXMethod || kind==referenced.get_kind()) && spelling==token.get_spelling()) { + auto referenced_usrs=referenced.get_all_usr_extended(); + for(auto &usr: referenced_usrs) { + if(usrs.count(usr)) { + offsets.emplace_back(token.offsets); + break; } } } } - return offsets; - } - else { - std::vector > offsets; - for(auto &token: *this) { - if(token.is_identifier()) { - auto referenced=token.get_cursor().get_referenced(); - if(referenced && spelling==token.get_spelling() && usrs.count(referenced.get_usr_extended())) - offsets.emplace_back(token.offsets); - } - } - return offsets; } + return offsets; }