summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/target_map/target_map.cpp
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2023-07-06 13:59:57 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2023-08-24 18:22:28 +0200
commitc58649e50879c513b0e26e04de9f9fcf176d70bd (patch)
tree956e051025d6ac3d27195245e70db9205212ca84 /src/buildtool/build_engine/target_map/target_map.cpp
parentce1a62febe998df25852f01045833fd5d578f812 (diff)
downloadjustbuild-c58649e50879c513b0e26e04de9f9fcf176d70bd.tar.gz
LinkedMap: Simplify ::Find() methods
... to silence false-positive 'possible dangling reference' warning produced by gcc 13.2.0.
Diffstat (limited to 'src/buildtool/build_engine/target_map/target_map.cpp')
-rw-r--r--src/buildtool/build_engine/target_map/target_map.cpp31
1 files changed, 10 insertions, 21 deletions
diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp
index a19ec2df..40c0891b 100644
--- a/src/buildtool/build_engine/target_map/target_map.cpp
+++ b/src/buildtool/build_engine/target_map/target_map.cpp
@@ -155,10 +155,8 @@ struct TargetData {
/*fatal=*/true);
return nullptr;
}
- auto const& config_expr =
- string_fields.Find(field_name)
- .value_or(std::reference_wrapper{Expression::kEmptyList})
- .get();
+ auto const& config_expr = *(string_fields.Find(field_name)
+ .value_or(&Expression::kEmptyList));
config_exprs.emplace(field_name, config_expr);
}
@@ -173,10 +171,8 @@ struct TargetData {
/*fatal=*/true);
return nullptr;
}
- auto const& string_expr =
- string_fields.Find(field_name)
- .value_or(std::reference_wrapper{Expression::kEmptyList})
- .get();
+ auto const& string_expr = *(string_fields.Find(field_name)
+ .value_or(&Expression::kEmptyList));
string_exprs.emplace(field_name, string_expr);
}
@@ -191,10 +187,8 @@ struct TargetData {
/*fatal=*/true);
return nullptr;
}
- auto const& target_expr =
- target_fields.Find(field_name)
- .value_or(std::reference_wrapper{Expression::kEmptyList})
- .get();
+ auto const& target_expr = *(target_fields.Find(field_name)
+ .value_or(&Expression::kEmptyList));
auto const& nodes = target_expr->List();
Expression::list_t targets{};
targets.reserve(nodes.size());
@@ -1132,7 +1126,7 @@ void withRuleDefinition(
true);
return;
}
- auto const& exprs = provider_value->get();
+ auto const& exprs = **provider_value;
if (not exprs->IsList()) {
(*logger)(fmt::format("Provider {} in {} must be list "
"of target nodes but found: {}",
@@ -1363,14 +1357,9 @@ void withTargetNode(
}
rule_map->ConsumeAfterKeysReady(
ts,
- {rule_name->get()->Name()},
- [abs,
- subcaller,
- setter,
- logger,
- key,
- result_map,
- rn = rule_name->get()](auto values) {
+ {(**rule_name)->Name()},
+ [abs, subcaller, setter, logger, key, result_map, rn = **rule_name](
+ auto values) {
auto data = TargetData::FromTargetNode(
*values[0],
abs,