diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-06-27 15:13:59 +0200 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2022-06-28 19:30:39 +0200 |
commit | 6045a6d15738b3104e34cc05a9c5624f3f98bd03 (patch) | |
tree | e24979e32191cbfc4c636eaf0e262ec2523552b1 /src/buildtool/build_engine/expression/evaluator.hpp | |
parent | c29b5de236525b04a852d06d53e76ff341a86fa3 (diff) | |
download | justbuild-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.hpp | 17 |
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 |