From 9ba32f306a27abbf82b70dc48c1b973e37759034 Mon Sep 17 00:00:00 2001 From: OGINO Masanori Date: Thu, 11 Jul 2013 15:36:56 +0900 Subject: [PATCH] Update the ordering algorithm to semver 2.0.0. Note that Version's `le` is not "less than or equal to" now, since `lt` ignores build metadata. I think the new ordering algorithm satisfies strict weak ordering which C++ STL requires, instead of strict total ordering. --- src/libextra/semver.rs | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/libextra/semver.rs b/src/libextra/semver.rs index 6c9453a5a3b..a5e99cc79bb 100644 --- a/src/libextra/semver.rs +++ b/src/libextra/semver.rs @@ -113,13 +113,7 @@ impl cmp::Ord for Version { (0, _) => false, (_, 0) => true, (_, _) => self.pre < other.pre - })) || - - (self.major == other.major && - self.minor == other.minor && - self.patch == other.patch && - self.pre == other.pre && - self.build < other.build) + })) } #[inline] @@ -377,15 +371,12 @@ fn test_spec_order() { let vs = ["1.0.0-alpha", "1.0.0-alpha.1", + "1.0.0-alpha.beta", + "1.0.0-beta", "1.0.0-beta.2", "1.0.0-beta.11", "1.0.0-rc.1", - "1.0.0-rc.1+build.1", - "1.0.0", - "1.0.0+0.3.7", - "1.3.7+build", - "1.3.7+build.2.b8f12d7", - "1.3.7+build.11.e0f985a"]; + "1.0.0"]; let mut i = 1; while i < vs.len() { let a = parse(vs[i-1]).get();