From 16a61d5c4b1faff9571a3f02ebaeecc7684603af Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Tue, 28 Jun 2022 11:00:47 +0200 Subject: Use a more meaningful abbreviation of expression values ... in error messages. The outer structure is usually more important than the the details of the first element. --- src/buildtool/build_engine/expression/configuration.hpp | 2 +- src/buildtool/build_engine/expression/expression.cpp | 3 +++ src/buildtool/build_engine/expression/expression.hpp | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/buildtool/build_engine/expression/configuration.hpp b/src/buildtool/build_engine/expression/configuration.hpp index 5d0b9c2a..3306d293 100644 --- a/src/buildtool/build_engine/expression/configuration.hpp +++ b/src/buildtool/build_engine/expression/configuration.hpp @@ -47,10 +47,10 @@ class Configuration { size_t actual_width = width - prefix.size(); for (auto const& [key, value] : expr_->Map()) { std::string key_str = Expression{key}.ToString(); - std::string val_str = value->ToString(); if (actual_width > key_str.size() + 3) { ss << prefix << key_str << " : "; size_t remain = actual_width - key_str.size() - 3; + std::string val_str = value->ToAbbrevString(remain); if (val_str.size() >= remain) { ss << val_str.substr(0, remain - 3) << "..."; } diff --git a/src/buildtool/build_engine/expression/expression.cpp b/src/buildtool/build_engine/expression/expression.cpp index 6891d7ab..65077efe 100644 --- a/src/buildtool/build_engine/expression/expression.cpp +++ b/src/buildtool/build_engine/expression/expression.cpp @@ -147,6 +147,9 @@ auto Expression::ToString() const -> std::string { return ToJson().dump(); } +[[nodiscard]] auto Expression::ToAbbrevString(size_t len) const -> std::string { + return AbbreviateJson(ToJson(), len); +} // NOLINTNEXTLINE(misc-no-recursion) auto Expression::ToHash() const noexcept -> std::string { return hash_.SetOnceAndGet([this] { return ComputeHash(); }); diff --git a/src/buildtool/build_engine/expression/expression.hpp b/src/buildtool/build_engine/expression/expression.hpp index 68dddb10..334dfb0d 100644 --- a/src/buildtool/build_engine/expression/expression.hpp +++ b/src/buildtool/build_engine/expression/expression.hpp @@ -212,6 +212,7 @@ class Expression { -> nlohmann::json; [[nodiscard]] auto IsCacheable() const -> bool; [[nodiscard]] auto ToString() const -> std::string; + [[nodiscard]] auto ToAbbrevString(size_t len) const -> std::string; [[nodiscard]] auto ToHash() const noexcept -> std::string; [[nodiscard]] auto ToIdentifier() const noexcept -> std::string { return ToHexString(ToHash()); -- cgit v1.2.3