summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <[email protected]>2025-09-26 14:21:53 +0300
committervvvv <[email protected]>2025-09-26 14:35:02 +0300
commite664ea1f749f613aa313379c775c2e7a7a268e64 (patch)
tree9ad368ea9e17baeaf091a133b0064e09fe826428
parent9239d3fa83520c4cc193a272ed9c62bc5eec3e6b (diff)
Simplify formatting of langver
commit_hash:1ae54663218f72de44b8f3d1bcda3eb8763347a9
-rw-r--r--yql/essentials/public/langver/ut/yql_langver_ut.cpp7
-rw-r--r--yql/essentials/public/langver/yql_langver.cpp10
-rw-r--r--yql/essentials/public/langver/yql_langver.h3
3 files changed, 20 insertions, 0 deletions
diff --git a/yql/essentials/public/langver/ut/yql_langver_ut.cpp b/yql/essentials/public/langver/ut/yql_langver_ut.cpp
index 0b7b871ecf3..67f7586e643 100644
--- a/yql/essentials/public/langver/ut/yql_langver_ut.cpp
+++ b/yql/essentials/public/langver/ut/yql_langver_ut.cpp
@@ -34,6 +34,13 @@ Y_UNIT_TEST_SUITE(TLangVerTests) {
UNIT_ASSERT_VALUES_EQUAL(b[s.Size()], 0);
}
+ Y_UNIT_TEST(FormatString) {
+ UNIT_ASSERT(!FormatLangVersion(MakeLangVersion(99999, 1)));
+ UNIT_ASSERT(!FormatLangVersion(MakeLangVersion(999, 1)));
+ UNIT_ASSERT_VALUES_EQUAL(FormatLangVersion(MakeLangVersion(2025, 1)), "2025.01");
+ UNIT_ASSERT_VALUES_EQUAL(FormatLangVersion(MakeLangVersion(2025, 12)), "2025.12");
+ }
+
Y_UNIT_TEST(Deprecated) {
UNIT_ASSERT(IsDeprecatedLangVersion(MakeLangVersion(2025,2),MakeLangVersion(2027,1)));
UNIT_ASSERT(!IsDeprecatedLangVersion(MakeLangVersion(2025,3),MakeLangVersion(2025,1)));
diff --git a/yql/essentials/public/langver/yql_langver.cpp b/yql/essentials/public/langver/yql_langver.cpp
index df9297de7e4..5f91735eaa9 100644
--- a/yql/essentials/public/langver/yql_langver.cpp
+++ b/yql/essentials/public/langver/yql_langver.cpp
@@ -69,6 +69,16 @@ bool FormatLangVersion(TLangVersion ver, TLangVersionBuffer& buffer, TStringBuf&
return true;
}
+TMaybe<TString> FormatLangVersion(TLangVersion ver) {
+ TLangVersionBuffer buffer;
+ TStringBuf result;
+ if (!FormatLangVersion(ver, buffer, result)) {
+ return Nothing();
+ }
+
+ return TString(result);
+}
+
TLangVersion GetMaxReleasedLangVersion() {
return MaxReleasedLangVersion;
}
diff --git a/yql/essentials/public/langver/yql_langver.h b/yql/essentials/public/langver/yql_langver.h
index 10c968b9e7e..c646ce9ac08 100644
--- a/yql/essentials/public/langver/yql_langver.h
+++ b/yql/essentials/public/langver/yql_langver.h
@@ -1,5 +1,7 @@
#pragma once
#include <util/generic/strbuf.h>
+#include <util/generic/string.h>
+#include <util/generic/maybe.h>
#include <util/system/types.h>
#include <array>
@@ -58,6 +60,7 @@ using TLangVersionBuffer = std::array<char, LangVersionBufferSize>;
bool IsValidLangVersion(TLangVersion ver);
bool ParseLangVersion(TStringBuf str, TLangVersion& result);
bool FormatLangVersion(TLangVersion ver, TLangVersionBuffer& buffer, TStringBuf& result);
+TMaybe<TString> FormatLangVersion(TLangVersion ver);
void EnumerateLangVersions(const std::function<void(TLangVersion)>& callback);
enum class EBackportCompatibleFeaturesMode {