From a88266798f7c317ed28f6ace4fe297ab8061dddc Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 4 Nov 2020 13:02:01 +0100 Subject: [PATCH] CPlusPlus: Differentiate declarations with an initializer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ... from those without one, and display the former like write accesses. Task-number: QTCREATORBUG-24894 Change-Id: I5e2d83b2a3ec4735054441c346687f97eeb039fb Reviewed-by: André Hartmann --- src/libs/cplusplus/FindUsages.cpp | 5 +++- src/libs/cplusplus/FindUsages.h | 2 +- src/plugins/cpptools/cppfindreferences.cpp | 1 + .../cplusplus/findusages/tst_findusages.cpp | 26 +++++++++---------- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp index 8807fad9523..95b3f266ccd 100644 --- a/src/libs/cplusplus/FindUsages.cpp +++ b/src/libs/cplusplus/FindUsages.cpp @@ -383,8 +383,11 @@ Usage::Type FindUsages::getType(int line, int column, int tokenIndex) continue; } if (const auto declarator = (*it)->asDeclarator()) { - if (containsToken(declarator->core_declarator)) + if (containsToken(declarator->core_declarator)) { + if (declarator->initializer) + return Usage::Type::Initialization; return Usage::Type::Declaration; + } if (const auto decl = (*(it + 1))->asSimpleDeclaration()) { if (decl->symbols && decl->symbols->value) { return checkPotentialWrite( diff --git a/src/libs/cplusplus/FindUsages.h b/src/libs/cplusplus/FindUsages.h index a0e1130c15d..48f392cfc7b 100644 --- a/src/libs/cplusplus/FindUsages.h +++ b/src/libs/cplusplus/FindUsages.h @@ -39,7 +39,7 @@ namespace CPlusPlus { class CPLUSPLUS_EXPORT Usage { public: - enum class Type { Declaration, Read, Write, WritableRef, Other }; + enum class Type { Declaration, Initialization, Read, Write, WritableRef, Other }; Usage() = default; Usage(const Utils::FilePath &path, const QString &lineText, Type t, int line, int col, int len) diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 00d8c096e14..18438934d09 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -555,6 +555,7 @@ static void displayResults(SearchResult *search, QFutureWatchername()->identifier()->chars(), "p"); find(p); QCOMPARE(find.usages().size(), 10); - QCOMPARE(find.usages().at(0).type, Usage::Type::Declaration); + QCOMPARE(find.usages().at(0).type, Usage::Type::Initialization); QCOMPARE(find.usages().at(1).type, Usage::Type::Write); QCOMPARE(find.usages().at(2).type, Usage::Type::Write); QCOMPARE(find.usages().at(3).type, Usage::Type::WritableRef);