From 17f2cab4490f075a5cb9e975e4b92c06572270ca Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Fri, 17 Jun 2022 10:49:29 +0200 Subject: analysed targets: artifacts can also be contained in nodes and results --- .../build_engine/analysed_target/analysed_target.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/buildtool/build_engine/analysed_target/analysed_target.cpp b/src/buildtool/build_engine/analysed_target/analysed_target.cpp index 7124e672..bae35ada 100644 --- a/src/buildtool/build_engine/analysed_target/analysed_target.cpp +++ b/src/buildtool/build_engine/analysed_target/analysed_target.cpp @@ -21,6 +21,24 @@ void CollectNonKnownArtifacts( CollectNonKnownArtifacts(val, artifacts, traversed); } } + else if (expr->IsNode()) { + auto const& node = expr->Node(); + if (node.IsAbstract()) { + CollectNonKnownArtifacts( + node.GetAbstract().target_fields, artifacts, traversed); + } + else { + // value node + CollectNonKnownArtifacts(node.GetValue(), artifacts, traversed); + } + } + else if (expr->IsResult()) { + auto const& result = expr->Result(); + CollectNonKnownArtifacts( + result.artifact_stage, artifacts, traversed); + CollectNonKnownArtifacts(result.runfiles, artifacts, traversed); + CollectNonKnownArtifacts(result.provides, artifacts, traversed); + } else if (expr->IsArtifact()) { auto const& artifact = expr->Artifact(); if (not artifact.IsKnown()) { -- cgit v1.2.3