summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/expression/evaluator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/build_engine/expression/evaluator.cpp')
-rw-r--r--src/buildtool/build_engine/expression/evaluator.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/buildtool/build_engine/expression/evaluator.cpp b/src/buildtool/build_engine/expression/evaluator.cpp
index 6c9d47c3..24a12fce 100644
--- a/src/buildtool/build_engine/expression/evaluator.cpp
+++ b/src/buildtool/build_engine/expression/evaluator.cpp
@@ -285,10 +285,14 @@ auto Union(Expression::list_t const& dicts, size_t from, size_t to)
if constexpr (kDisjoint) {
auto dup = left->Map().FindConflictingDuplicate(right->Map());
if (dup) {
+ auto left_val = left->Get(dup->get(), Expression::none_t{});
+ auto right_val = right->Get(dup->get(), Expression::none_t{});
throw Evaluator::EvaluationError{
fmt::format("Map union not essentially disjoint as claimed, "
- "duplicate key '{}'.",
- dup->get())};
+ "duplicate key {}; conflicting values:\n- {}\n- {}",
+ nlohmann::json(dup->get()).dump(),
+ left_val->ToString(),
+ right_val->ToString())};
}
}
return ExpressionPtr{Expression::map_t{left, right}};