From be91d666a483d0c982aea3c7b2d77a1c1dfa1bf9 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Wed, 14 Feb 2024 12:50:32 +0100 Subject: 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. --- .../build_engine/base_maps/expression_map.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/buildtool/build_engine/base_maps/expression_map.cpp') 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 const& expr_file_map, } auto [names, ids] = std::move(*import_aliases).Obtain(); + auto wrapped_logger = std::make_shared( + [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 const& expr_file_map, (*setter)(std::make_shared( 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}; -- cgit v1.2.3