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