diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-02-14 12:50:32 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-04-10 16:07:46 +0200 |
commit | c77a3408e925c7bd9f1ca6a7e27ad8784680628e (patch) | |
tree | ce3a63c6b08d9414d88981080393e1053105301b /src/buildtool/build_engine/base_maps/expression_map.cpp | |
parent | aa7bdecb755c998947783c6259fbbbcdce973fed (diff) | |
download | justbuild-c77a3408e925c7bd9f1ca6a7e27ad8784680628e.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.
(cherry picked from commit be91d666a483d0c982aea3c7b2d77a1c1dfa1bf9)
Diffstat (limited to 'src/buildtool/build_engine/base_maps/expression_map.cpp')
-rw-r--r-- | src/buildtool/build_engine/base_maps/expression_map.cpp | 19 |
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 e495fa6b..d06037f3 100644 --- a/src/buildtool/build_engine/base_maps/expression_map.cpp +++ b/src/buildtool/build_engine/base_maps/expression_map.cpp @@ -74,6 +74,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), @@ -88,13 +96,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}; |