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.cpp2
-rw-r--r--src/buildtool/build_engine/expression/evaluator.hpp17
2 files changed, 17 insertions, 2 deletions
diff --git a/src/buildtool/build_engine/expression/evaluator.cpp b/src/buildtool/build_engine/expression/evaluator.cpp
index 9789c519..0097bd27 100644
--- a/src/buildtool/build_engine/expression/evaluator.cpp
+++ b/src/buildtool/build_engine/expression/evaluator.cpp
@@ -922,7 +922,7 @@ auto Evaluator::EvaluationError::WhileEvaluating(ExpressionPtr const& expr,
}
ss << expr->ToString() << std::endl;
ss << " environment " << std::endl;
- ss << env.Enumerate(" - ", kLineWidth) << std::endl;
+ ss << env.Enumerate(" - ", Config().expression_log_limit) << std::endl;
ss << ex.what();
return EvaluationError{ss.str(), true /* while_eval */};
}
diff --git a/src/buildtool/build_engine/expression/evaluator.hpp b/src/buildtool/build_engine/expression/evaluator.hpp
index b4cd5979..e709de43 100644
--- a/src/buildtool/build_engine/expression/evaluator.hpp
+++ b/src/buildtool/build_engine/expression/evaluator.hpp
@@ -10,7 +10,17 @@
class Configuration;
class Evaluator {
+ struct ConfigData {
+ std::size_t expression_log_limit{kDefaultExpressionLogLimit};
+ };
+
public:
+ /// \brief Set the limit for the size of logging a single expression
+ /// in an error message.
+ static void SetExpressionLogLimit(std::size_t width) {
+ Config().expression_log_limit = width;
+ }
+
class EvaluationError : public std::exception {
public:
explicit EvaluationError(std::string const& msg,
@@ -65,12 +75,17 @@ class Evaluator {
std::function<void(void)> const& note_user_context = []() {}) noexcept
-> ExpressionPtr;
+ constexpr static std::size_t kDefaultExpressionLogLimit = 320;
+
private:
- constexpr static std::size_t kLineWidth = 80;
[[nodiscard]] static auto Evaluate(ExpressionPtr const& expr,
Configuration const& env,
FunctionMapPtr const& functions)
-> ExpressionPtr;
+ [[nodiscard]] static auto Config() noexcept -> ConfigData& {
+ static ConfigData instance{};
+ return instance;
+ }
};
#endif // INCLUDED_SRC_BUILDTOOL_BUILD_ENGINE_EXPRESSION_EVALUATOR_HPP