semver: use operator overloading (#19935)

This commit is contained in:
Swastik Baranwal 2023-11-19 20:20:12 +05:30 committed by GitHub
parent 4b347a8881
commit 7e280a4b61
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 28 deletions

View file

@ -48,11 +48,11 @@ fn (set ComparatorSet) satisfies(ver Version) bool {
fn (c Comparator) satisfies(ver Version) bool { fn (c Comparator) satisfies(ver Version) bool {
return match c.op { return match c.op {
.gt { ver.gt(c.ver) } .gt { ver > c.ver }
.lt { ver.lt(c.ver) } .lt { ver < c.ver }
.ge { ver.ge(c.ver) } .ge { ver >= c.ver }
.le { ver.le(c.ver) } .le { ver <= c.ver }
.eq { ver.eq(c.ver) } .eq { ver == c.ver }
} }
} }

View file

@ -70,26 +70,41 @@ pub fn (ver Version) satisfies(input string) bool {
} }
// eq returns `true` if `v1` is equal to `v2`. // eq returns `true` if `v1` is equal to `v2`.
@[deprecated: 'use v1 == v2 instead']
pub fn (v1 Version) eq(v2 Version) bool { pub fn (v1 Version) eq(v2 Version) bool {
return compare_eq(v1, v2) return compare_eq(v1, v2)
} }
// == checks if `v1` is equal to `v2`
pub fn (v1 Version) == (v2 Version) bool {
return compare_eq(v1, v2)
}
// gt returns `true` if `v1` is greater than `v2`. // gt returns `true` if `v1` is greater than `v2`.
@[deprecated: 'use v1 > v2 instead']
pub fn (v1 Version) gt(v2 Version) bool { pub fn (v1 Version) gt(v2 Version) bool {
return compare_gt(v1, v2) return compare_gt(v1, v2)
} }
// < checks if `v1` is less than `v2`.
pub fn (v1 Version) < (v2 Version) bool {
return compare_lt(v1, v2)
}
// lt returns `true` if `v1` is less than `v2`. // lt returns `true` if `v1` is less than `v2`.
@[deprecated: 'use v1 < v2 instead']
pub fn (v1 Version) lt(v2 Version) bool { pub fn (v1 Version) lt(v2 Version) bool {
return compare_lt(v1, v2) return compare_lt(v1, v2)
} }
// ge returns `true` if `v1` is greater than or equal to `v2`. // ge returns `true` if `v1` is greater than or equal to `v2`.
@[deprecated: 'use v1 >= v2 instead']
pub fn (v1 Version) ge(v2 Version) bool { pub fn (v1 Version) ge(v2 Version) bool {
return compare_ge(v1, v2) return compare_ge(v1, v2)
} }
// le returns `true` if `v1` is less than or equal to `v2`. // le returns `true` if `v1` is less than or equal to `v2`
@[deprecated: 'use v1 <= v2 instead']
pub fn (v1 Version) le(v2 Version) bool { pub fn (v1 Version) le(v2 Version) bool {
return compare_le(v1, v2) return compare_le(v1, v2)
} }

View file

@ -118,26 +118,26 @@ fn test_compare() {
patch := semver.build(1, 0, 1) patch := semver.build(1, 0, 1)
minor := semver.build(1, 2, 3) minor := semver.build(1, 2, 3)
major := semver.build(2, 0, 0) major := semver.build(2, 0, 0)
assert first.le(first) assert first <= first
assert first.ge(first) assert first >= first
assert !first.lt(first) assert !(first < first)
assert !first.gt(first) assert !(first > first)
assert patch.ge(first) assert patch > first
assert first.le(patch) assert first <= patch
assert !first.ge(patch) assert !(first >= patch)
assert !patch.le(first) assert !(patch <= first)
assert patch.gt(first) assert patch > first
assert first.lt(patch) assert first < patch
assert !first.gt(patch) assert !(first > patch)
assert !patch.lt(first) assert !(patch < first)
assert minor.gt(patch) assert minor > patch
assert patch.lt(minor) assert patch < minor
assert !patch.gt(minor) assert !(patch > minor)
assert !minor.lt(patch) assert !(minor < patch)
assert major.gt(minor) assert major > minor
assert minor.lt(major) assert minor < major
assert !minor.gt(major) assert !(minor > major)
assert !major.lt(minor) assert !(major < minor)
} }
fn test_satisfies() { fn test_satisfies() {

View file

@ -162,13 +162,13 @@ fn (mut pc PkgConfig) resolve(pkgname string) !string {
pub fn atleast(v string) bool { pub fn atleast(v string) bool {
v0 := semver.from(pkgconfig.version) or { return false } v0 := semver.from(pkgconfig.version) or { return false }
v1 := semver.from(v) or { return false } v1 := semver.from(v) or { return false }
return v0.gt(v1) return v0 > v1
} }
pub fn (mut pc PkgConfig) atleast(v string) bool { pub fn (mut pc PkgConfig) atleast(v string) bool {
v0 := semver.from(pc.version) or { return false } v0 := semver.from(pc.version) or { return false }
v1 := semver.from(v) or { return false } v1 := semver.from(v) or { return false }
return v0.gt(v1) return v0 > v1
} }
pub fn (mut pc PkgConfig) extend(pcdep &PkgConfig) !string { pub fn (mut pc PkgConfig) extend(pcdep &PkgConfig) !string {