diff options
author | Oliver Reiche <oliver.reiche@huawei.com> | 2023-07-06 13:59:57 +0200 |
---|---|---|
committer | Oliver Reiche <oliver.reiche@huawei.com> | 2023-08-24 18:22:28 +0200 |
commit | c58649e50879c513b0e26e04de9f9fcf176d70bd (patch) | |
tree | 956e051025d6ac3d27195245e70db9205212ca84 /src/buildtool/build_engine/target_map/target_map.cpp | |
parent | ce1a62febe998df25852f01045833fd5d578f812 (diff) | |
download | justbuild-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.cpp | 31 |
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, |