aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/string/format_string-inl.h
diff options
context:
space:
mode:
authorMaxim Yurchuk <maxim-yurchuk@ydb.tech>2024-11-20 17:37:57 +0000
committerGitHub <noreply@github.com>2024-11-20 17:37:57 +0000
commitf76323e9b295c15751e51e3443aa47a36bee8023 (patch)
tree4113c8cad473a33e0f746966e0cf087252fa1d7a /library/cpp/yt/string/format_string-inl.h
parent753ecb8d410a4cb459c26f3a0082fb2d1724fe63 (diff)
parenta7b9a6afea2a9d7a7bfac4c5eb4c1a8e60adb9e6 (diff)
downloadydb-f76323e9b295c15751e51e3443aa47a36bee8023.tar.gz
Merge pull request #11788 from ydb-platform/mergelibs-241120-1113
Library import 241120-1113
Diffstat (limited to 'library/cpp/yt/string/format_string-inl.h')
-rw-r--r--library/cpp/yt/string/format_string-inl.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/library/cpp/yt/string/format_string-inl.h b/library/cpp/yt/string/format_string-inl.h
index a692d9648d..67f9bad45c 100644
--- a/library/cpp/yt/string/format_string-inl.h
+++ b/library/cpp/yt/string/format_string-inl.h
@@ -4,6 +4,8 @@
#include "format_string.h"
#endif
+#include <algorithm>
+
namespace NYT {
////////////////////////////////////////////////////////////////////////////////
@@ -15,8 +17,13 @@ consteval TBasicFormatString<TArgs...>::TBasicFormatString(const T& fmt)
: Format_(fmt)
{
CheckFormattability();
-#if !defined(NDEBUG) && !defined(YT_DISABLE_FORMAT_STATIC_ANALYSIS)
- NDetail::TFormatAnalyser::ValidateFormat<std::remove_cvref_t<TArgs>...>(Format_);
+#if !defined(YT_DISABLE_FORMAT_STATIC_ANALYSIS)
+ std::tie(Markers, Escapes) = NDetail::TFormatAnalyser::AnalyzeFormat<std::remove_cvref_t<TArgs>...>(Format_);
+#else
+ std::ranges::fill_n(std::ranges::begin(Escapes), 1, -1);
+ if constexpr (sizeof...(TArgs) != 0) {
+ std::ranges::fill_n(std::ranges::begin(Markers), 1, std::tuple{0, 0});
+ }
#endif
}
@@ -46,6 +53,11 @@ template <class... TArgs>
TBasicFormatString<TArgs...>::TBasicFormatString(TRuntimeFormat fmt)
: Format_(fmt.Get())
{
+ std::ranges::fill_n(std::ranges::begin(Escapes), 1, -1);
+ if constexpr (sizeof...(TArgs) != 0) {
+ std::ranges::fill_n(std::ranges::begin(Markers), 1, std::tuple{0, 0});
+ }
+
// NB(arkady-e1ppa): StaticFormat performs the
// formattability check of the args in a way
// that provides more useful information