Skip to content

Commit 2de0c34

Browse files
mdiepaciidgh
authored andcommitted
Change PackageContainerConstraint<T>.Requirement to PackageRequirement
It doesn't need to be generic.
1 parent 79f527d commit 2de0c34

File tree

8 files changed

+47
-48
lines changed

8 files changed

+47
-48
lines changed

Sources/PackageGraph/DependencyResolver.swift

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,42 @@ public enum VersionSetSpecifier: Hashable, CustomStringConvertible {
146146
}
147147
}
148148

149+
/// A requirement that a package must satisfy.
150+
public enum PackageRequirement: Hashable {
151+
152+
/// The requirement is specified by the version set.
153+
case versionSet(VersionSetSpecifier)
154+
155+
/// The requirement is specified by the revision.
156+
///
157+
/// The revision string (identifier) should be valid and present in the
158+
/// container. Only one revision requirement per container is possible
159+
/// i.e. two revision requirements for same container will lead to
160+
/// unsatisfiable resolution. The revision requirement can either come
161+
/// from initial set of constraints or from dependencies of a revision
162+
/// requirement.
163+
case revision(String)
164+
165+
/// Un-versioned requirement i.e. a version should not resolved.
166+
case unversioned
167+
168+
/// Returns if this requirement pins to an exact version, e.g. a specific
169+
/// version or a revision.
170+
public var isExact: Bool {
171+
switch self {
172+
case .versionSet(let vs):
173+
if case .exact = vs {
174+
return true
175+
}
176+
return false
177+
case .revision:
178+
return true
179+
case .unversioned:
180+
return false
181+
}
182+
}
183+
}
184+
149185
/// An identifier which unambiguously references a package container.
150186
///
151187
/// This identifier is used to abstractly refer to another container when
@@ -248,51 +284,15 @@ public protocol PackageContainerProvider {
248284
public struct PackageContainerConstraint<T: PackageContainerIdentifier>: CustomStringConvertible, Equatable {
249285
public typealias Identifier = T
250286

251-
/// The requirement of this constraint.
252-
public enum Requirement: Hashable {
253-
254-
/// The requirement is specified by the version set.
255-
case versionSet(VersionSetSpecifier)
256-
257-
/// The requirement is specified by the revision.
258-
///
259-
/// The revision string (identifier) should be valid and present in the
260-
/// container. Only one revision requirement per container is possible
261-
/// i.e. two revision requirements for same container will lead to
262-
/// unsatisfiable resolution. The revision requirement can either come
263-
/// from initial set of constraints or from dependencies of a revision
264-
/// requirement.
265-
case revision(String)
266-
267-
/// Un-versioned requirement i.e. a version should not resolved.
268-
case unversioned
269-
270-
/// Returns if this requirement pins to an exact version, e.g. a specific
271-
/// version or a revision.
272-
public var isExact: Bool {
273-
switch self {
274-
case .versionSet(let vs):
275-
if case .exact = vs {
276-
return true
277-
}
278-
return false
279-
case .revision(_):
280-
return true
281-
case .unversioned:
282-
return false
283-
}
284-
}
285-
}
286-
287287
/// The identifier for the container the constraint is on.
288288
public let identifier: Identifier
289289

290290
/// The constraint requirement.
291-
public let requirement: Requirement
291+
public let requirement: PackageRequirement
292292

293293
/// Create a constraint requiring the given `container` satisfying the
294294
/// `requirement`.
295-
public init(container identifier: Identifier, requirement: Requirement) {
295+
public init(container identifier: Identifier, requirement: PackageRequirement) {
296296
self.identifier = identifier
297297
self.requirement = requirement
298298
}
@@ -367,7 +367,7 @@ public enum BoundVersion: Equatable, CustomStringConvertible {
367367
public struct PackageContainerConstraintSet<C: PackageContainer>: Collection, Hashable {
368368
public typealias Container = C
369369
public typealias Identifier = Container.Identifier
370-
public typealias Requirement = PackageContainerConstraint<Identifier>.Requirement
370+
public typealias Requirement = PackageRequirement
371371

372372
public typealias Index = Dictionary<Identifier, Requirement>.Index
373373
public typealias Element = Dictionary<Identifier, Requirement>.Element

Sources/PackageGraph/PackageGraphRoot.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public struct PackageGraphRoot {
118118
extension PackageDependencyDescription.Requirement {
119119

120120
/// Returns the constraint requirement representation.
121-
public func toConstraintRequirement() -> RepositoryPackageConstraint.Requirement {
121+
public func toConstraintRequirement() -> PackageRequirement {
122122
switch self {
123123
case .range(let range):
124124
return .versionSet(.range(range))

Sources/PackageGraph/Pubgrub.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import struct PackageModel.PackageReference
1414

1515
/// A term represents a statement about a package that may be true or false.
1616
struct Term<Identifier: PackageContainerIdentifier>: Equatable, Hashable {
17-
typealias Requirement = PackageContainerConstraint<Identifier>.Requirement
17+
typealias Requirement = PackageRequirement
1818

1919
let package: Identifier
2020
let requirement: Requirement
@@ -245,8 +245,7 @@ public struct Incompatibility<Identifier: PackageContainerIdentifier>: Equatable
245245
// in the same incompatibility, but have these combined by intersecting
246246
// their version requirements to a^1.5.0.
247247

248-
typealias Requirement = PackageContainerConstraint<Identifier>.Requirement
249-
let intersectedPackages = terms.reduce(into: [PackageAndPolarity: Requirement]()) { res, term in
248+
let intersectedPackages = terms.reduce(into: [PackageAndPolarity: PackageRequirement]()) { res, term in
250249
let pap = PackageAndPolarity(term)
251250
let previous = res[pap, default: term.requirement]
252251
let intersection = term.intersect(withRequirement: previous, andPolarity: term.isPositive)

Sources/TestSupport/MockDependencyResolver.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public class MockPackageContainer: PackageContainer {
7575

7676
public typealias Identifier = String
7777

78-
public typealias Dependency = (container: Identifier, requirement: MockPackageConstraint.Requirement)
78+
public typealias Dependency = (container: Identifier, requirement: PackageRequirement)
7979

8080
let name: Identifier
8181

Sources/Workspace/CheckoutState.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public struct CheckoutState: Equatable, CustomStringConvertible {
5656
extension CheckoutState {
5757

5858
/// Returns requirement induced by this state.
59-
func requirement() -> RepositoryPackageConstraint.Requirement {
59+
func requirement() -> PackageRequirement {
6060
if let version = version {
6161
return .versionSet(.exact(version))
6262
} else if let branch = branch {

Sources/Workspace/Workspace.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ extension Workspace {
469469
}
470470

471471
// Compute the custom or extra constraint we need to impose.
472-
let requirement: RepositoryPackageConstraint.Requirement
472+
let requirement: PackageRequirement
473473
if let version = version {
474474
requirement = .versionSet(.exact(version))
475475
} else if let branch = branch {

Tests/PackageGraphTests/DependencyResolverTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -986,7 +986,7 @@ private extension DependencyResolver {
986986
subjectTo allConstraints: [Identifier: VersionSetSpecifier] = [:],
987987
excluding exclusions: [Identifier: Set<Version>] = [:]
988988
) -> AnySequence<AssignmentSet> {
989-
let constraints = Dictionary(items: allConstraints.map{ ($0.0, PackageContainerConstraint<Identifier>.Requirement.versionSet($0.1)) })
989+
let constraints = Dictionary(items: allConstraints.map{ ($0.0, PackageRequirement.versionSet($0.1)) })
990990
return resolveSubtree(container, subjectTo: ConstraintSet(constraints), excluding: exclusions)
991991
}
992992
}

Tests/PackageGraphTests/PubgrubTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class _MockPackageContainer: PackageContainer {
2222

2323
public typealias Identifier = PackageReference
2424

25-
public typealias Dependency = (container: Identifier, requirement: _MockPackageConstraint.Requirement)
25+
public typealias Dependency = (container: Identifier, requirement: PackageRequirement)
2626

2727
let name: Identifier
2828

0 commit comments

Comments
 (0)