summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/expression
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/build_engine/expression')
-rw-r--r--src/buildtool/build_engine/expression/evaluator.cpp7
-rw-r--r--src/buildtool/build_engine/expression/expression.cpp9
2 files changed, 14 insertions, 2 deletions
diff --git a/src/buildtool/build_engine/expression/evaluator.cpp b/src/buildtool/build_engine/expression/evaluator.cpp
index a14b367f..e573bf36 100644
--- a/src/buildtool/build_engine/expression/evaluator.cpp
+++ b/src/buildtool/build_engine/expression/evaluator.cpp
@@ -228,6 +228,7 @@ auto Join(ExpressionPtr const& expr, std::string const& sep) -> ExpressionPtr {
}
template <bool kDisjoint = false>
+// NOLINTNEXTLINE(misc-no-recursion)
auto Union(Expression::list_t const& dicts, size_t from, size_t to)
-> ExpressionPtr {
if (to <= from) {
@@ -786,7 +787,7 @@ auto AssertNonEmptyExpr(SubExprEvaluator&& eval,
throw Evaluator::EvaluationError(ss.str(), false, true);
}
-auto built_in_functions =
+auto const kBuiltInFunctions =
FunctionMap::MakePtr({{"var", VarExpr},
{"if", IfExpr},
{"cond", CondExpr},
@@ -883,7 +884,7 @@ auto Evaluator::EvaluateExpression(
return Evaluate(
expr,
env,
- FunctionMap::MakePtr(built_in_functions, provider_functions));
+ FunctionMap::MakePtr(kBuiltInFunctions, provider_functions));
} catch (EvaluationError const& ex) {
if (ex.UserContext()) {
try {
@@ -910,6 +911,7 @@ auto Evaluator::EvaluateExpression(
return ExpressionPtr{nullptr};
}
+// NOLINTNEXTLINE(misc-no-recursion)
auto Evaluator::Evaluate(ExpressionPtr const& expr,
Configuration const& env,
FunctionMapPtr const& functions) -> ExpressionPtr {
@@ -923,6 +925,7 @@ auto Evaluator::Evaluate(ExpressionPtr const& expr,
expr->List().cbegin(),
expr->List().cend(),
std::back_inserter(list),
+ // NOLINTNEXTLINE(misc-no-recursion)
[&](auto const& e) { return Evaluate(e, env, functions); });
return ExpressionPtr{list};
}
diff --git a/src/buildtool/build_engine/expression/expression.cpp b/src/buildtool/build_engine/expression/expression.cpp
index 61b5f827..f9e43463 100644
--- a/src/buildtool/build_engine/expression/expression.cpp
+++ b/src/buildtool/build_engine/expression/expression.cpp
@@ -57,6 +57,7 @@ auto Expression::operator[](size_t pos) && -> ExpressionPtr {
fmt::format("List pos '{}' is out of bounds.", pos)};
}
+// NOLINTNEXTLINE(misc-no-recursion)
auto Expression::ToJson(Expression::JsonMode mode) const -> nlohmann::json {
if (IsBool()) {
return Bool();
@@ -93,12 +94,14 @@ auto Expression::ToJson(Expression::JsonMode mode) const -> nlohmann::json {
std::transform(list.begin(),
list.end(),
std::back_inserter(json),
+ // NOLINTNEXTLINE(misc-no-recursion)
[mode](auto const& e) { return e->ToJson(mode); });
return json;
}
if (IsMap()) {
auto json = nlohmann::json::object();
auto const& map = Value<map_t>()->get();
+ // NOLINTNEXTLINE(misc-no-recursion)
std::for_each(map.begin(), map.end(), [&](auto const& p) {
json.emplace(p.first, p.second->ToJson(mode));
});
@@ -110,6 +113,7 @@ auto Expression::ToJson(Expression::JsonMode mode) const -> nlohmann::json {
return nlohmann::json{};
}
+// NOLINTNEXTLINE(misc-no-recursion)
auto Expression::IsCacheable() const -> bool {
// Must be updated whenever we add a new non-cacheable value
if (IsName()) {
@@ -138,10 +142,12 @@ auto Expression::IsCacheable() const -> bool {
return true;
}
+// NOLINTNEXTLINE(misc-no-recursion)
auto Expression::ToString() const -> std::string {
return ToJson().dump();
}
+// NOLINTNEXTLINE(misc-no-recursion)
auto Expression::ToHash() const noexcept -> std::string {
if (hash_.load() == nullptr) {
if (not hash_loading_.exchange(true)) {
@@ -155,6 +161,7 @@ auto Expression::ToHash() const noexcept -> std::string {
return *hash_.load();
}
+// NOLINTNEXTLINE(misc-no-recursion)
auto Expression::FromJson(nlohmann::json const& json) noexcept
-> ExpressionPtr {
if (json.is_null()) {
@@ -176,6 +183,7 @@ auto Expression::FromJson(nlohmann::json const& json) noexcept
std::transform(json.begin(),
json.end(),
std::back_inserter(l),
+ // NOLINTNEXTLINE(misc-no-recursion)
[](auto const& j) { return FromJson(j); });
return ExpressionPtr{l};
}
@@ -209,6 +217,7 @@ auto Expression::TypeString() const noexcept -> std::string {
return TypeStringForIndex();
}
+// NOLINTNEXTLINE(misc-no-recursion)
auto Expression::ComputeHash() const noexcept -> std::string {
auto hash = std::string{};
if (IsNone() or IsBool() or IsNumber() or IsString() or IsArtifact() or