diff options
Diffstat (limited to 'src/buildtool/build_engine/expression')
-rw-r--r-- | src/buildtool/build_engine/expression/evaluator.cpp | 2 | ||||
-rw-r--r-- | src/buildtool/build_engine/expression/evaluator.hpp | 17 |
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 |