diff --git a/src/lib/data/Storage.cpp b/src/lib/data/Storage.cpp index f7271b95..107a8bac 100644 --- a/src/lib/data/Storage.cpp +++ b/src/lib/data/Storage.cpp @@ -477,8 +477,9 @@ std::vector Storage::getActiveTokenIdsForId(Id tokenId, Id* declarationId) c std::vector Storage::getNodeIdsForLocationIds(const std::vector& locationIds) const { - std::set nodeIds; std::set edgeIds; + std::set nodeIds; + std::set implicitNodeIds; for (Id locationId : locationIds) { @@ -492,13 +493,25 @@ std::vector Storage::getNodeIdsForLocationIds(const std::vector& locatio else if(m_sqliteStorage.isNode(elementId)) { StorageNode node = m_sqliteStorage.getNodeById(elementId); - if (node.id != 0 && intToDefinitionType(node.definitionType) == DEFINITION_EXPLICIT) + if (node.id != 0) { - nodeIds.insert(elementId); + if (intToDefinitionType(node.definitionType) == DEFINITION_IMPLICIT) + { + implicitNodeIds.insert(elementId); + } + else + { + nodeIds.insert(elementId); + } } } } + if (nodeIds.size() == 0) + { + nodeIds = implicitNodeIds; + } + if (nodeIds.size()) { return utility::toVector(nodeIds);