From f436bc8e22337c97f59a16e1018f3ff2ffd09ace Mon Sep 17 00:00:00 2001 From: k Date: Tue, 2 Dec 2025 17:00:57 +0100 Subject: [PATCH 1/2] [SemVer] Reflect.compare() is not specified to return exactly 1 or -1 (or 0) --- src/haxelib/SemVer.hx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/haxelib/SemVer.hx b/src/haxelib/SemVer.hx index df654bfa..4058b632 100644 --- a/src/haxelib/SemVer.hx +++ b/src/haxelib/SemVer.hx @@ -110,16 +110,16 @@ abstract SemVer(String) to String { return isValid(this); @:op(a > b) static inline function gt(a:SemVer, b:SemVer) - return compare(a, b) == 1; + return compare(a, b) > 0; @:op(a >= b) static inline function gteq(a:SemVer, b:SemVer) - return compare(a, b) != -1; + return compare(a, b) >= 0; @:op(a < b) static inline function lt(a:SemVer, b:SemVer) - return compare(a, b) == -1; + return compare(a, b) < 0; @:op(a <= b) static inline function lteq(a:SemVer, b:SemVer) - return compare(a, b) != 1; + return compare(a, b) <= 0; @:op(a == b) static inline function eq(a:SemVer, b:SemVer) return compare(a, b) == 0; From 4a9082dc3d251fffd9a15a99ee014f3f2b6882b0 Mon Sep 17 00:00:00 2001 From: k Date: Thu, 4 Dec 2025 15:20:21 +0100 Subject: [PATCH 2/2] [tests] Add comparison tests --- test/tests/TestSemVer.hx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/tests/TestSemVer.hx b/test/tests/TestSemVer.hx index 20cbe37c..4dadb2b8 100644 --- a/test/tests/TestSemVer.hx +++ b/test/tests/TestSemVer.hx @@ -62,6 +62,17 @@ class TestSemVer extends TestBase { assertEquals( "invalid", parseInvalid("10.50.2-rc.01")); } + public function testPreviewComparison() { + assertTrue(SemVer.ofString("0.1.1-beta.1") < SemVer.ofString("0.1.1")); + assertTrue(SemVer.ofString("0.1.1-beta.1") > SemVer.ofString("0.1.0")); + assertTrue(SemVer.ofString("0.1.1-alpha.2") > SemVer.ofString("0.1.1-alpha.1")); + assertTrue(SemVer.ofString("0.1.1-beta.1") > SemVer.ofString("0.1.1-alpha.2")); + assertTrue(SemVer.ofString("0.1.1-rc.1") > SemVer.ofString("0.1.1-beta.1")); + #if !(server || haxelib_api) + assertTrue(SemVer.ofString("0.1.1-preview.1") > SemVer.ofString("0.1.1-rc.1")); + #end + } + function parseInvalid( str:String ):String { return try { SemVer.ofString(str);