Utils: Add findAnyChild() to TypedTreeItem

Removes some static casts on the user side.

Change-Id: I0a9ae512f294c0e78e0a5890e557c483af86abfe
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Stenger
2020-10-22 13:35:12 +02:00
parent 8e78b9a379
commit b4cc084a98
6 changed files with 11 additions and 10 deletions

View File

@@ -149,6 +149,11 @@ public:
TreeItem::insertOrderedChild(item, cmp0); TreeItem::insertOrderedChild(item, cmp0);
} }
ChildType *findAnyChild(const std::function<bool(TreeItem *)> &pred) const
{
return static_cast<ChildType *>(TreeItem::findAnyChild(pred));
}
ChildType *reverseFindAnyChild(const std::function<bool(TreeItem *)> &pred) const ChildType *reverseFindAnyChild(const std::function<bool(TreeItem *)> &pred) const
{ {
return static_cast<ChildType *>(TreeItem::reverseFindAnyChild(pred)); return static_cast<ChildType *>(TreeItem::reverseFindAnyChild(pred));

View File

@@ -99,10 +99,9 @@ const ITestTreeItem *BoostTestResult::findTestTreeItem() const
if (!rootNode) if (!rootNode)
return nullptr; return nullptr;
const auto foundItem = rootNode->findAnyChild([this](const Utils::TreeItem *item) { return rootNode->findAnyChild([this](const Utils::TreeItem *item) {
return matches(static_cast<const BoostTestTreeItem *>(item)); return matches(static_cast<const BoostTestTreeItem *>(item));
}); });
return static_cast<const ITestTreeItem *>(foundItem);
} }
bool BoostTestResult::matches(const BoostTestTreeItem *item) const bool BoostTestResult::matches(const BoostTestTreeItem *item) const

View File

@@ -74,7 +74,7 @@ const ITestTreeItem *CatchResult::findTestTreeItem() const
const QString tcName = name(); const QString tcName = name();
const QString tcFilePath = fileName(); const QString tcFilePath = fileName();
const auto item = rootNode->findAnyChild([&tcName, &tcFilePath](const Utils::TreeItem *item) { return rootNode->findAnyChild([&tcName, &tcFilePath](const Utils::TreeItem *item) {
const auto treeItem = static_cast<const CatchTreeItem *>(item); const auto treeItem = static_cast<const CatchTreeItem *>(item);
if (!treeItem || treeItem->filePath() != tcFilePath) if (!treeItem || treeItem->filePath() != tcFilePath)
return false; return false;
@@ -82,7 +82,6 @@ const ITestTreeItem *CatchResult::findTestTreeItem() const
return parameterized ? tcName.startsWith(treeItem->name() + " - ") return parameterized ? tcName.startsWith(treeItem->name() + " - ")
: tcName == treeItem->name(); : tcName == treeItem->name();
}); });
return static_cast<const ITestTreeItem *>(item);
} }
} // namespace Internal } // namespace Internal

View File

@@ -103,11 +103,10 @@ const ITestTreeItem *GTestResult::findTestTreeItem() const
if (!rootNode) if (!rootNode)
return nullptr; return nullptr;
const auto item = rootNode->findAnyChild([this](const Utils::TreeItem *item) { return rootNode->findAnyChild([this](const Utils::TreeItem *item) {
const auto treeItem = static_cast<const TestTreeItem *>(item); const auto treeItem = static_cast<const TestTreeItem *>(item);
return treeItem && matches(treeItem); return treeItem && matches(treeItem);
}); });
return static_cast<const ITestTreeItem *>(item);
} }
bool GTestResult::matches(const TestTreeItem *treeItem) const bool GTestResult::matches(const TestTreeItem *treeItem) const

View File

@@ -141,11 +141,10 @@ const ITestTreeItem *QtTestResult::findTestTreeItem() const
const TestTreeItem *rootNode = framework->rootNode(); const TestTreeItem *rootNode = framework->rootNode();
QTC_ASSERT(rootNode, return nullptr); QTC_ASSERT(rootNode, return nullptr);
const auto item = rootNode->findAnyChild([this](const Utils::TreeItem *item) { return rootNode->findAnyChild([this](const Utils::TreeItem *item) {
const TestTreeItem *treeItem = static_cast<const TestTreeItem *>(item); const TestTreeItem *treeItem = static_cast<const TestTreeItem *>(item);
return treeItem && matches(treeItem); return treeItem && matches(treeItem);
}); });
return static_cast<const ITestTreeItem *>(item);
} }
bool QtTestResult::matches(const TestTreeItem *item) const bool QtTestResult::matches(const TestTreeItem *item) const

View File

@@ -1936,9 +1936,9 @@ void tst_Dumpers::dumper()
} }
const QString iname = check.iname; const QString iname = check.iname;
WatchItem *item = static_cast<WatchItem *>(local.findAnyChild([iname](Utils::TreeItem *item) { WatchItem *item = local.findAnyChild([iname](Utils::TreeItem *item) {
return static_cast<WatchItem *>(item)->internalName() == iname; return static_cast<WatchItem *>(item)->internalName() == iname;
})); });
if (!item) { if (!item) {
if (check.optionallyPresent) if (check.optionallyPresent)
return true; return true;