summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2022-06-17 10:49:29 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2022-06-20 16:54:03 +0200
commit17f2cab4490f075a5cb9e975e4b92c06572270ca (patch)
treef282c763f3a170c5ee7bceedb7d84309cb187731 /src
parent399fb01fef0d9ccdbdf840970d4d65c0352244e5 (diff)
downloadjustbuild-17f2cab4490f075a5cb9e975e4b92c06572270ca.tar.gz
analysed targets: artifacts can also be contained in nodes and results
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/build_engine/analysed_target/analysed_target.cpp18
1 files changed, 18 insertions, 0 deletions
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()) {