From 72b171430b5c9e90aec5173e33d36f247d308128 Mon Sep 17 00:00:00 2001 From: Oliver Reiche Date: Fri, 23 Sep 2022 16:41:47 +0200 Subject: AnalysedTarget: Make shared pointer's content immutable ... while technically not required, it makes it harder to run into nasty errors. --- .../analysed_target/analysed_target.hpp | 2 +- .../build_engine/base_maps/source_map.cpp | 2 +- .../build_engine/target_map/built_in_rules.cpp | 20 ++++++------ src/buildtool/build_engine/target_map/export.cpp | 4 +-- .../build_engine/target_map/target_map.cpp | 37 +++++++++++----------- src/buildtool/main/analyse.cpp | 10 +++--- 6 files changed, 38 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/buildtool/build_engine/analysed_target/analysed_target.hpp b/src/buildtool/build_engine/analysed_target/analysed_target.hpp index c99f6dfc..77ebfb1e 100644 --- a/src/buildtool/build_engine/analysed_target/analysed_target.hpp +++ b/src/buildtool/build_engine/analysed_target/analysed_target.hpp @@ -114,6 +114,6 @@ class AnalysedTarget { TargetGraphInformation graph_information_; }; -using AnalysedTargetPtr = std::shared_ptr; +using AnalysedTargetPtr = std::shared_ptr; #endif // INCLUDED_SRC_BUILDTOOL_BUILDENGINE_ANALYSED_TARGET_ANALYSED_TARGET_HPP diff --git a/src/buildtool/build_engine/base_maps/source_map.cpp b/src/buildtool/build_engine/base_maps/source_map.cpp index 9624ce1d..c2653e93 100644 --- a/src/buildtool/build_engine/base_maps/source_map.cpp +++ b/src/buildtool/build_engine/base_maps/source_map.cpp @@ -15,7 +15,7 @@ auto as_target(const BuildMaps::Base::EntityName& key, ExpressionPtr artifact) -> AnalysedTargetPtr { auto stage = ExpressionPtr{ Expression::map_t{key.GetNamedTarget().name, std::move(artifact)}}; - return std::make_shared( + return std::make_shared( TargetResult{stage, Expression::kEmptyMap, stage}, std::vector{}, std::vector{}, diff --git a/src/buildtool/build_engine/target_map/built_in_rules.cpp b/src/buildtool/build_engine/target_map/built_in_rules.cpp index 1f6e0b09..ca4fd630 100644 --- a/src/buildtool/build_engine/target_map/built_in_rules.cpp +++ b/src/buildtool/build_engine/target_map/built_in_rules.cpp @@ -166,7 +166,7 @@ void FileGenRuleWithDeps( auto vars_set = std::unordered_set{}; vars_set.insert(param_vars->begin(), param_vars->end()); - auto analysis_result = std::make_shared( + auto analysis_result = std::make_shared( TargetResult{stage, ExpressionPtr{Expression::map_t{}}, stage}, std::vector{}, std::vector{data_val->String()}, @@ -379,14 +379,14 @@ void InstallRuleWithDeps( } auto const& empty_map = Expression::kEmptyMap; - auto result = - std::make_shared(TargetResult{stage, empty_map, stage}, - std::vector{}, - std::vector{}, - std::vector{}, - std::move(effective_vars), - std::move(tainted), - std::move(deps_info)); + auto result = std::make_shared( + TargetResult{stage, empty_map, stage}, + std::vector{}, + std::vector{}, + std::vector{}, + std::move(effective_vars), + std::move(tainted), + std::move(deps_info)); result = result_map->Add(key.target, effective_conf, std::move(result)); (*setter)(std::move(result)); @@ -833,7 +833,7 @@ void GenericRuleWithDeps( } auto const& empty_map = Expression::kEmptyMap; - auto result = std::make_shared( + auto result = std::make_shared( TargetResult{ ExpressionPtr{Expression::map_t{artifacts}}, empty_map, empty_map}, std::vector{action}, diff --git a/src/buildtool/build_engine/target_map/export.cpp b/src/buildtool/build_engine/target_map/export.cpp index 9a43a591..e535a87a 100644 --- a/src/buildtool/build_engine/target_map/export.cpp +++ b/src/buildtool/build_engine/target_map/export.cpp @@ -47,7 +47,7 @@ void FinalizeExport( std::unordered_set vars_set{}; vars_set.insert(vars.begin(), vars.end()); - auto analysis_result = std::make_shared( + auto analysis_result = std::make_shared( TargetResult{(*value)->Artifacts(), provides, (*value)->RunFiles()}, std::vector{}, std::vector{}, @@ -126,7 +126,7 @@ void ExportRule( {}, {}}; - auto analysis_result = std::make_shared( + auto analysis_result = std::make_shared( *result, std::vector{}, std::vector{}, diff --git a/src/buildtool/build_engine/target_map/target_map.cpp b/src/buildtool/build_engine/target_map/target_map.cpp index 799b73bb..6741de2e 100644 --- a/src/buildtool/build_engine/target_map/target_map.cpp +++ b/src/buildtool/build_engine/target_map/target_map.cpp @@ -778,13 +778,13 @@ void withDependencies( return; } auto analysis_result = - std::make_shared(std::move(*result).Result(), - std::move(actions), - std::move(blobs), - std::move(trees), - std::move(effective_vars), - std::move(tainted), - deps_info); + std::make_shared(std::move(*result).Result(), + std::move(actions), + std::move(blobs), + std::move(trees), + std::move(effective_vars), + std::move(tainted), + deps_info); analysis_result = result_map->Add(key.target, effective_conf, std::move(analysis_result)); (*setter)(std::move(analysis_result)); @@ -1279,7 +1279,7 @@ void withTargetNode( if (target_node.IsValue()) { // fixed value node, create analysed target from result auto const& val = target_node.GetValue(); - (*setter)(std::make_shared( + (*setter)(std::make_shared( AnalysedTarget{val->Result(), {}, {}, @@ -1375,7 +1375,7 @@ void TreeTarget( auto tree = ExpressionPtr{ Expression::map_t{target.name, ExpressionPtr{*known_tree}}}; - auto analysis_result = std::make_shared( + auto analysis_result = std::make_shared( TargetResult{tree, {}, tree}, std::vector{}, std::vector{}, @@ -1444,14 +1444,15 @@ void TreeTarget( auto tree_id = tree->Id(); auto tree_map = ExpressionPtr{Expression::map_t{ name, ExpressionPtr{ArtifactDescription{tree_id}}}}; - auto analysis_result = std::make_shared( - TargetResult{tree_map, {}, tree_map}, - std::vector{}, - std::vector{}, - std::vector{tree}, - std::unordered_set{}, - std::set{}, - TargetGraphInformation::kSource); + auto analysis_result = + std::make_shared( + TargetResult{tree_map, {}, tree_map}, + std::vector{}, + std::vector{}, + std::vector{tree}, + std::unordered_set{}, + std::set{}, + TargetGraphInformation::kSource); analysis_result = result_map->Add( key.target, {}, std::move(analysis_result)); (*setter)(std::move(analysis_result)); @@ -1475,7 +1476,7 @@ void GlobResult(const std::vector& values, } } auto stage = ExpressionPtr{Expression::map_t{result}}; - auto target = std::make_shared( + auto target = std::make_shared( TargetResult{stage, Expression::kEmptyMap, stage}, std::vector{}, std::vector{}, diff --git a/src/buildtool/main/analyse.cpp b/src/buildtool/main/analyse.cpp index 6f329391..cfbe939d 100644 --- a/src/buildtool/main/analyse.cpp +++ b/src/buildtool/main/analyse.cpp @@ -75,9 +75,9 @@ void DetectAndReportPending(std::string const& name, return std::nullopt; } -[[nodiscard]] auto SwitchToActionInput( - const std::shared_ptr& target, - const ActionDescription::Ptr& action) -> std::shared_ptr { +[[nodiscard]] auto SwitchToActionInput(const AnalysedTargetPtr& target, + const ActionDescription::Ptr& action) + -> AnalysedTargetPtr { auto inputs = Expression::map_t::underlying_map_t{}; for (auto const& [k, v] : action->Inputs()) { inputs[k] = ExpressionPtr{Expression{v}}; @@ -93,7 +93,7 @@ void DetectAndReportPending(std::string const& name, } auto provides_exp = Expression::FromJson(provides); - return std::make_shared( + return std::make_shared( TargetResult{inputs_exp, provides_exp, Expression::kEmptyMap}, std::vector{action}, target->Blobs(), @@ -124,7 +124,7 @@ void DetectAndReportPending(std::string const& name, result_map, jobs); Logger::Log(LogLevel::Info, "Requested target is {}", id.ToString()); - std::shared_ptr target{}; + AnalysedTargetPtr target{}; bool failed{false}; { -- cgit v1.2.3