Skip to content

Commit b4ae3b3

Browse files
committed
[DependencyResolver] Add VersionSetSpecifier.any.
- This isn't necessary, but is useful inside algorithms to allow a consistent API for dealing with queries.
1 parent 5c21e98 commit b4ae3b3

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

Sources/PackageGraph/DependencyResolver.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import struct PackageDescription.Version
1212

1313
/// An abstract definition for a set of versions.
1414
public enum VersionSetSpecifier: Equatable {
15+
/// The universal set.
16+
case any
17+
1518
/// The empty set.
1619
case empty
1720

@@ -21,6 +24,10 @@ public enum VersionSetSpecifier: Equatable {
2124
/// Compute the intersection of two set specifiers.
2225
public func intersection(_ rhs: VersionSetSpecifier) -> VersionSetSpecifier {
2326
switch (self, rhs) {
27+
case (.any, _):
28+
return rhs
29+
case (_, .any):
30+
return self
2431
case (.empty, _):
2532
return .empty
2633
case (_, .empty):
@@ -46,11 +53,17 @@ public enum VersionSetSpecifier: Equatable {
4653
return false
4754
case .range(let range):
4855
return range.contains(version)
56+
case .any:
57+
return true
4958
}
5059
}
5160
}
5261
public func ==(_ lhs: VersionSetSpecifier, _ rhs: VersionSetSpecifier) -> Bool {
5362
switch (lhs, rhs) {
63+
case (.any, .any):
64+
return true
65+
case (.any, _):
66+
return false
5467
case (.empty, .empty):
5568
return true
5669
case (.empty, _):

Tests/PackageGraphTests/DependencyResolverTests.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@ class DependencyResolverTests: XCTestCase {
120120
XCTAssert(v1Range.intersection(v2_0_0Range) == .empty)
121121
XCTAssert(v1Range.intersection(v1_1Range) == v1_1Range)
122122
XCTAssert(v1_to_3Range.intersection(v2_to_4Range) == .range("2.0.0" ..< "3.0.0"))
123+
XCTAssert(v1Range.intersection(.any) == v1Range)
124+
XCTAssert(VersionSetSpecifier.empty.intersection(.any) == .empty)
125+
XCTAssert(VersionSetSpecifier.any.intersection(.any) == .any)
123126
}
124127

125128
func testVersionAssignment() {

0 commit comments

Comments
 (0)