summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOliver Reiche <oliver.reiche@huawei.com>2023-04-25 16:43:56 +0200
committerOliver Reiche <oliver.reiche@huawei.com>2023-04-26 10:30:18 +0200
commitb44423ae49d79ff73655c83337184c84341d7f9a (patch)
treec02857ea788e36f2246377737cd4dbba19731435 /src
parent58419728bd0842304bfafbc2704b3bffe215f278 (diff)
downloadjustbuild-b44423ae49d79ff73655c83337184c84341d7f9a.tar.gz
evaluator: Improve evaluation error reporting
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/build_engine/expression/evaluator.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/buildtool/build_engine/expression/evaluator.cpp b/src/buildtool/build_engine/expression/evaluator.cpp
index 24a12fce..6aeea591 100644
--- a/src/buildtool/build_engine/expression/evaluator.cpp
+++ b/src/buildtool/build_engine/expression/evaluator.cpp
@@ -271,7 +271,12 @@ auto Union(Expression::list_t const& dicts, size_t from, size_t to)
return Expression::kEmptyMap;
}
if (to == from + 1) {
- return dicts[from];
+ auto const& entry = dicts[from];
+ if (not entry->IsMap()) {
+ throw Evaluator::EvaluationError{fmt::format(
+ "Map union list element is not a map: {}", entry->ToString())};
+ }
+ return entry;
}
size_t mid = from + (to - from) / 2;
auto left = Union(dicts, from, mid);