summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/expression/evaluator.hpp
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2022-06-27 15:13:59 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2022-06-28 19:30:39 +0200
commit6045a6d15738b3104e34cc05a9c5624f3f98bd03 (patch)
treee24979e32191cbfc4c636eaf0e262ec2523552b1 /src/buildtool/build_engine/expression/evaluator.hpp
parentc29b5de236525b04a852d06d53e76ff341a86fa3 (diff)
downloadjustbuild-6045a6d15738b3104e34cc05a9c5624f3f98bd03.tar.gz
Support more verbose error reporting
Diffstat (limited to 'src/buildtool/build_engine/expression/evaluator.hpp')
-rw-r--r--src/buildtool/build_engine/expression/evaluator.hpp17
1 files changed, 16 insertions, 1 deletions
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