diff options
author | Oliver Reiche <oliver.reiche@huawei.com> | 2023-04-25 16:43:56 +0200 |
---|---|---|
committer | Oliver Reiche <oliver.reiche@huawei.com> | 2023-04-26 10:30:18 +0200 |
commit | b44423ae49d79ff73655c83337184c84341d7f9a (patch) | |
tree | c02857ea788e36f2246377737cd4dbba19731435 | |
parent | 58419728bd0842304bfafbc2704b3bffe215f278 (diff) | |
download | justbuild-b44423ae49d79ff73655c83337184c84341d7f9a.tar.gz |
evaluator: Improve evaluation error reporting
-rw-r--r-- | src/buildtool/build_engine/expression/evaluator.cpp | 7 |
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); |