summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/build_engine/expression/configuration.hpp4
-rw-r--r--src/buildtool/build_engine/expression/evaluator.cpp16
-rw-r--r--src/buildtool/build_engine/expression/expression.cpp2
-rw-r--r--src/buildtool/build_engine/expression/expression.hpp2
-rw-r--r--src/buildtool/build_engine/expression/linked_map.hpp10
-rw-r--r--src/buildtool/build_engine/target_map/target_map.cpp31
6 files changed, 26 insertions, 39 deletions
diff --git a/src/buildtool/build_engine/expression/configuration.hpp b/src/buildtool/build_engine/expression/configuration.hpp
index 3e0328d8..725d2860 100644
--- a/src/buildtool/build_engine/expression/configuration.hpp
+++ b/src/buildtool/build_engine/expression/configuration.hpp
@@ -97,7 +97,7 @@ class Configuration {
auto const& map = expr_->Map();
auto v = map.Find(k);
if (v) {
- subset.emplace(k, v->get());
+ subset.emplace(k, **v);
}
else {
subset.emplace(k, Expression::kNone);
@@ -114,7 +114,7 @@ class Configuration {
auto const key = k->String();
auto v = map.Find(key);
if (v) {
- subset.emplace(key, v->get());
+ subset.emplace(key, **v);
}
else {
subset.emplace(key, ExpressionPtr{Expression::none_t{}});
diff --git a/src/buildtool/build_engine/expression/evaluator.cpp b/src/buildtool/build_engine/expression/evaluator.cpp
index 1d207b3b..d2cee809 100644
--- a/src/buildtool/build_engine/expression/evaluator.cpp
+++ b/src/buildtool/build_engine/expression/evaluator.cpp
@@ -661,11 +661,10 @@ auto ToSubdirExpr(SubExprEvaluator&& eval,
}
std::string msg;
try {
- auto msg_val = eval(msg_expr->get(), env);
+ auto msg_val = eval(**msg_expr, env);
msg = msg_val->ToString();
} catch (std::exception const&) {
- msg =
- "[non evaluating term] " + msg_expr->get()->ToString();
+ msg = "[non evaluating term] " + (**msg_expr)->ToString();
}
std::stringstream ss{};
ss << msg << std::endl;
@@ -693,11 +692,10 @@ auto ToSubdirExpr(SubExprEvaluator&& eval,
}
std::string msg;
try {
- auto msg_val = eval(msg_expr->get(), env);
+ auto msg_val = eval(**msg_expr, env);
msg = msg_val->ToString();
} catch (std::exception const&) {
- msg =
- "[non evaluating term] " + msg_expr->get()->ToString();
+ msg = "[non evaluating term] " + (**msg_expr)->ToString();
}
std::stringstream ss{};
ss << msg << std::endl;
@@ -899,10 +897,10 @@ auto DisjointUnionExpr(SubExprEvaluator&& eval,
}
std::string msg;
try {
- auto msg_val = eval(msg_expr->get(), env);
+ auto msg_val = eval(**msg_expr, env);
msg = msg_val->ToString();
} catch (std::exception const&) {
- msg = "[non evaluating term] " + msg_expr->get()->ToString();
+ msg = "[non evaluating term] " + (**msg_expr)->ToString();
}
std::stringstream ss{};
ss << msg << std::endl;
@@ -1098,7 +1096,7 @@ auto Evaluator::Evaluate(ExpressionPtr const& expr,
auto const& type = expr["type"]->String();
auto func = functions->Find(type);
if (func) {
- return func->get()(
+ return (**func)(
[&functions](auto const& subexpr, auto const& subenv) {
return Evaluator::Evaluate(subexpr, subenv, functions);
},
diff --git a/src/buildtool/build_engine/expression/expression.cpp b/src/buildtool/build_engine/expression/expression.cpp
index 1cb27a69..0b470a9d 100644
--- a/src/buildtool/build_engine/expression/expression.cpp
+++ b/src/buildtool/build_engine/expression/expression.cpp
@@ -31,7 +31,7 @@ auto Expression::operator[](
std::string const& key) const& -> ExpressionPtr const& {
auto value = Map().Find(key);
if (value) {
- return value->get();
+ return **value;
}
throw ExpressionTypeError{
fmt::format("Map does not contain key '{}'.", key)};
diff --git a/src/buildtool/build_engine/expression/expression.hpp b/src/buildtool/build_engine/expression/expression.hpp
index 9915c089..70c7e4df 100644
--- a/src/buildtool/build_engine/expression/expression.hpp
+++ b/src/buildtool/build_engine/expression/expression.hpp
@@ -145,7 +145,7 @@ class Expression {
const& -> std::optional<std::reference_wrapper<ExpressionPtr const>> {
auto value = Map().Find(key);
if (value) {
- return value;
+ return std::reference_wrapper{**value};
}
return std::nullopt;
}
diff --git a/src/buildtool/build_engine/expression/linked_map.hpp b/src/buildtool/build_engine/expression/linked_map.hpp
index e19c5e68..6f394c7e 100644
--- a/src/buildtool/build_engine/expression/linked_map.hpp
+++ b/src/buildtool/build_engine/expression/linked_map.hpp
@@ -139,7 +139,7 @@ class LinkedMap {
[[nodiscard]] auto at(K const& key) const& -> V const& {
auto value = Find(key);
if (value) {
- return value->get();
+ return **value;
}
throw std::out_of_range{fmt::format("Missing key {}", key)};
}
@@ -163,7 +163,7 @@ class LinkedMap {
}
[[nodiscard]] auto Find(K const& key) const& noexcept
- -> std::optional<std::reference_wrapper<V const>> {
+ -> std::optional<V const*> {
if (content_.IsNotNull()) {
auto val = content_.Map().Find(key);
if (val) {
@@ -173,7 +173,7 @@ class LinkedMap {
else {
auto it = map_.find(key);
if (it != map_.end()) {
- return it->second;
+ return &it->second;
}
}
if (next_.IsNotNull()) {
@@ -189,7 +189,7 @@ class LinkedMap {
if (content_.IsNotNull()) {
auto val = content_.Map().Find(key);
if (val) {
- return val->get();
+ return **val;
}
}
else {
@@ -201,7 +201,7 @@ class LinkedMap {
if (next_.IsNotNull()) {
auto val = next_.Map().Find(key);
if (val) {
- return val->get();
+ return **val;
}
}
return std::nullopt;
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,