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.hpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/buildtool/build_engine/expression/evaluator.hpp b/src/buildtool/build_engine/expression/evaluator.hpp
index 726df568..ba9bd2ef 100644
--- a/src/buildtool/build_engine/expression/evaluator.hpp
+++ b/src/buildtool/build_engine/expression/evaluator.hpp
@@ -44,18 +44,20 @@ class Evaluator {
class EvaluationError : public std::exception {
public:
- explicit EvaluationError(std::string const& msg,
+ explicit EvaluationError(std::string msg,
bool while_eval = false,
bool user_context = false,
std::vector<ExpressionPtr> involved_objetcs =
std::vector<ExpressionPtr>{}) noexcept
- : msg_{(while_eval ? ""
- : (user_context ? "UserError: "
- : "EvaluationError: ")) +
- msg},
+ : msg_{std::move(msg)},
while_eval_{while_eval},
user_context_{user_context},
- involved_objects_{std::move(std::move(involved_objetcs))} {}
+ involved_objects_{std::move(std::move(involved_objetcs))} {
+ if (not while_eval_) {
+ msg_ = (user_context_ ? "UserError: " : "EvaluationError: ") +
+ msg_;
+ }
+ }
[[nodiscard]] auto what() const noexcept -> char const* final {
return msg_.c_str();
}