aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/string/format_string-inl.h
diff options
context:
space:
mode:
authorAlexander Smirnov <alex@ydb.tech>2024-11-20 11:14:58 +0000
committerAlexander Smirnov <alex@ydb.tech>2024-11-20 11:14:58 +0000
commit31773f157bf8164364649b5f470f52dece0a4317 (patch)
tree33d0f7eef45303ab68cf08ab381ce5e5e36c5240 /library/cpp/yt/string/format_string-inl.h
parent2c7938962d8689e175574fc1e817c05049f27905 (diff)
parenteff600952d5dfe17942f38f510a8ac2b203bb3a5 (diff)
downloadydb-31773f157bf8164364649b5f470f52dece0a4317.tar.gz
Merge branch 'rightlib' into mergelibs-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