summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/base_maps/expression_map.cpp
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2024-02-14 12:50:32 +0100
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-02-14 13:04:30 +0100
commitbe91d666a483d0c982aea3c7b2d77a1c1dfa1bf9 (patch)
tree2cc1b2f06f87b6e50f15b41b44c901523c899c5e /src/buildtool/build_engine/base_maps/expression_map.cpp
parente2e2f776bce4d0ca43c6d2da780f0de1853ac88e (diff)
downloadjustbuild-be91d666a483d0c982aea3c7b2d77a1c1dfa1bf9.tar.gz
expression map: properly wrap logger for import calls
... to provide an informative error message on how a rule is related to a particular import and, in particularly, at which expression a problem with the import occurred. While there, also improve the message in the other error case to follow our standard line-breaking scheme.
Diffstat (limited to 'src/buildtool/build_engine/base_maps/expression_map.cpp')
-rw-r--r--src/buildtool/build_engine/base_maps/expression_map.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/buildtool/build_engine/base_maps/expression_map.cpp b/src/buildtool/build_engine/base_maps/expression_map.cpp
index 5b2c0655..4e1c58ad 100644
--- a/src/buildtool/build_engine/base_maps/expression_map.cpp
+++ b/src/buildtool/build_engine/base_maps/expression_map.cpp
@@ -76,6 +76,14 @@ auto CreateExpressionMap(gsl::not_null<ExpressionFileMap*> const& expr_file_map,
}
auto [names, ids] = std::move(*import_aliases).Obtain();
+ auto wrapped_logger = std::make_shared<AsyncMapConsumerLogger>(
+ [logger, id](auto msg, auto fatal) {
+ (*logger)(
+ fmt::format("While handling imports of {}:\n{}",
+ id.ToString(),
+ msg),
+ fatal);
+ });
(*subcaller)(
std::move(ids),
[setter = std::move(setter),
@@ -90,13 +98,14 @@ auto CreateExpressionMap(gsl::not_null<ExpressionFileMap*> const& expr_file_map,
(*setter)(std::make_shared<ExpressionFunction>(
vars, imports, expr));
},
- std::move(logger));
+ wrapped_logger);
},
[logger, id](auto msg, auto fatal) {
- (*logger)(fmt::format("While reading expression file in {}: {}",
- id.GetNamedTarget().module,
- msg),
- fatal);
+ (*logger)(
+ fmt::format("While reading expression file in {}:\n{}",
+ id.GetNamedTarget().module,
+ msg),
+ fatal);
});
};
return ExpressionFunctionMap{expr_func_creator, jobs};