aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2020-10-12 15:19:29 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2020-10-21 09:12:33 +0000
commitb58ca33ff6627d146278d45a6df23a34172a73aa (patch)
treedafe3f5adad02d45bd1bc53a2cc3016b7b4edbd2
parent135e76f965618747b68ab1caae5768feda5fcee0 (diff)
CppTools: Categorize the delete operator as a write access
... in the "Find Usages" results. Change-Id: Ib399bf762c717b7d4439be26b9180574aefce7e3 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r--src/libs/cplusplus/FindUsages.cpp2
-rw-r--r--tests/auto/cplusplus/findusages/tst_findusages.cpp4
2 files changed, 5 insertions, 1 deletions
diff --git a/src/libs/cplusplus/FindUsages.cpp b/src/libs/cplusplus/FindUsages.cpp
index bdd1381f37..1685368817 100644
--- a/src/libs/cplusplus/FindUsages.cpp
+++ b/src/libs/cplusplus/FindUsages.cpp
@@ -348,6 +348,8 @@ Usage::Type FindUsages::getType(int line, int column, int tokenIndex)
}
if ((*it)->asCall())
return checkPotentialWrite(getUsageTypeForCall(it), it + 1);
+ if ((*it)->asDeleteExpression())
+ return Usage::Type::Write;
if (const auto binExpr = (*it)->asBinaryExpression()) {
if (binExpr->left_expression == *(it - 1) && isAssignment(binExpr->binary_op_token))
return checkPotentialWrite(Usage::Type::Write, it + 1);
diff --git a/tests/auto/cplusplus/findusages/tst_findusages.cpp b/tests/auto/cplusplus/findusages/tst_findusages.cpp
index 185d5cc554..d67033a905 100644
--- a/tests/auto/cplusplus/findusages/tst_findusages.cpp
+++ b/tests/auto/cplusplus/findusages/tst_findusages.cpp
@@ -2081,6 +2081,7 @@ int main()
s.n.constFunc();
s.n.nonConstFunc();
s.n.constFunc(s.value);
+ delete s.p;
}
)";
@@ -2165,7 +2166,7 @@ int main()
QVERIFY(varS);
QCOMPARE(varS->name()->identifier()->chars(), "s");
find(varS);
- QCOMPARE(find.usages().size(), 30);
+ QCOMPARE(find.usages().size(), 31);
QCOMPARE(find.usages().at(0).type, Usage::Type::Declaration);
QCOMPARE(find.usages().at(1).type, Usage::Type::WritableRef);
QCOMPARE(find.usages().at(2).type, Usage::Type::WritableRef);
@@ -2184,6 +2185,7 @@ int main()
QCOMPARE(find.usages().at(15).type, Usage::Type::WritableRef);
QCOMPARE(find.usages().at(16).type, Usage::Type::Read);
QCOMPARE(find.usages().at(17).type, Usage::Type::Read);
+ QCOMPARE(find.usages().at(18).type, Usage::Type::Write);
// Direct access to struct variable
QCOMPARE(find.usages().at(18).type, Usage::Type::Write);