Skip to content

Commit 086d0f9

Browse files
committed
Make Resolved* in PackageGraph value types
1 parent 1dee112 commit 086d0f9

File tree

11 files changed

+97
-260
lines changed

11 files changed

+97
-260
lines changed

Sources/Build/BuildDescription/ClangTargetBuildDescription.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import Basics
1414
import PackageLoading
1515
import PackageModel
16-
import class PackageGraph.ResolvedTarget
16+
import struct PackageGraph.ResolvedTarget
1717
import struct SPMBuildCore.BuildParameters
1818
import struct SPMBuildCore.BuildToolPluginInvocationResult
1919
import struct SPMBuildCore.PrebuildCommandResult

Sources/Build/BuildDescription/TargetBuildDescription.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import Basics
14-
import class PackageGraph.ResolvedTarget
14+
import struct PackageGraph.ResolvedTarget
1515
import struct PackageModel.Resource
1616
import struct SPMBuildCore.BuildToolPluginInvocationResult
1717

Sources/Build/BuildManifest/LLBuildManifestBuilder+Clang.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import struct LLBuildManifest.Node
1414
import struct Basics.AbsolutePath
1515
import struct Basics.InternalError
16-
import class PackageGraph.ResolvedTarget
16+
import struct PackageGraph.ResolvedTarget
1717
import PackageModel
1818

1919
extension LLBuildManifestBuilder {

Sources/Build/BuildManifest/LLBuildManifestBuilder+Swift.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import struct Basics.TSCAbsolutePath
1717
import struct LLBuildManifest.Node
1818
import struct LLBuildManifest.LLBuildManifest
1919
import struct SPMBuildCore.BuildParameters
20-
import class PackageGraph.ResolvedTarget
20+
import struct PackageGraph.ResolvedTarget
2121
import protocol TSCBasic.FileSystem
2222
import enum TSCBasic.ProcessEnv
2323
import func TSCBasic.topologicalSort

Sources/Build/BuildPlan/BuildPlan+Product.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313
import struct Basics.AbsolutePath
1414
import struct Basics.InternalError
15-
import class PackageGraph.ResolvedProduct
16-
import class PackageGraph.ResolvedTarget
15+
import struct PackageGraph.ResolvedProduct
16+
import struct PackageGraph.ResolvedTarget
1717
import class PackageModel.BinaryTarget
1818
import class PackageModel.ClangTarget
1919
import class PackageModel.Target

Sources/Build/BuildPlan/BuildPlan+Test.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import struct Basics.AbsolutePath
1616
import struct LLBuildManifest.TestDiscoveryTool
1717
import struct LLBuildManifest.TestEntryPointTool
1818
import struct PackageGraph.PackageGraph
19-
import class PackageGraph.ResolvedProduct
20-
import class PackageGraph.ResolvedTarget
19+
import struct PackageGraph.ResolvedProduct
20+
import struct PackageGraph.ResolvedTarget
2121
import struct PackageModel.Sources
2222
import class PackageModel.SwiftTarget
2323
import class PackageModel.Target
@@ -84,7 +84,7 @@ extension BuildPlan {
8484
testDiscoverySrc: Sources(paths: discoveryPaths, root: discoveryDerivedDir)
8585
)
8686
let discoveryResolvedTarget = ResolvedTarget(
87-
target: discoveryTarget,
87+
underlying: discoveryTarget,
8888
dependencies: testProduct.targets.map { .target($0, conditions: []) },
8989
defaultLocalization: testProduct.defaultLocalization,
9090
supportedPlatforms: testProduct.supportedPlatforms,
@@ -118,7 +118,7 @@ extension BuildPlan {
118118
testEntryPointSources: entryPointSources
119119
)
120120
let entryPointResolvedTarget = ResolvedTarget(
121-
target: entryPointTarget,
121+
underlying: entryPointTarget,
122122
dependencies: testProduct.targets.map { .target($0, conditions: []) } + [.target(discoveryResolvedTarget, conditions: [])],
123123
defaultLocalization: testProduct.defaultLocalization,
124124
supportedPlatforms: testProduct.supportedPlatforms,
@@ -148,7 +148,7 @@ extension BuildPlan {
148148
testEntryPointSources: entryPointResolvedTarget.underlying.sources
149149
)
150150
let entryPointResolvedTarget = ResolvedTarget(
151-
target: entryPointTarget,
151+
underlying: entryPointTarget,
152152
dependencies: entryPointResolvedTarget.dependencies + [.target(discoveryTargets.resolved, conditions: [])],
153153
defaultLocalization: testProduct.defaultLocalization,
154154
supportedPlatforms: testProduct.supportedPlatforms,

Sources/PackageGraph/PackageGraph+Loading.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -924,12 +924,10 @@ private final class ResolvedTargetBuilder: ResolvedBuilder<ResolvedTarget> {
924924
}
925925

926926
return ResolvedTarget(
927-
storage: .init(
928-
underlying: self.target,
929-
dependencies: dependencies,
930-
defaultLocalization: self.defaultLocalization,
931-
supportedPlatforms: self.platforms
932-
),
927+
underlying: self.target,
928+
dependencies: dependencies,
929+
defaultLocalization: self.defaultLocalization,
930+
supportedPlatforms: self.platforms,
933931
platformVersionProvider: self.platformVersionProvider
934932
)
935933
}

Sources/PackageGraph/Resolution/ResolvedPackage.swift

Lines changed: 25 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -14,75 +14,47 @@ import Basics
1414
import PackageModel
1515

1616
/// A fully resolved package. Contains resolved targets, products and dependencies of the package.
17-
public final class ResolvedPackage {
17+
public struct ResolvedPackage: Hashable {
1818
// The identity of the package.
1919
public var identity: PackageIdentity {
20-
return self.storage.underlying.identity
20+
return self.underlying.identity
2121
}
2222

2323
/// The manifest describing the package.
2424
public var manifest: Manifest {
25-
return self.storage.underlying.manifest
25+
return self.underlying.manifest
2626
}
2727

2828
/// The local path of the package.
2929
public var path: AbsolutePath {
30-
return self.storage.underlying.path
30+
return self.underlying.path
3131
}
3232

33-
/// The underlying package model.
34-
public var underlying: Package {
35-
self.storage.underlying
36-
}
33+
/// The underlying package reference.
34+
public let underlying: Package
3735

3836
/// The targets contained in the package.
39-
public var targets: [ResolvedTarget] {
40-
self.storage.targets
41-
}
37+
public let targets: [ResolvedTarget]
4238

4339
/// The products produced by the package.
44-
public var products: [ResolvedProduct] {
45-
self.storage.products
46-
}
40+
public let products: [ResolvedProduct]
4741

4842
/// The dependencies of the package.
49-
public var dependencies: [ResolvedPackage] {
50-
self.storage.dependencies
51-
}
43+
public let dependencies: [ResolvedPackage]
5244

53-
/// If the given package's source is a registry release, this provides additional metadata and signature information.
54-
public var registryMetadata: RegistryReleaseMetadata? {
55-
self.storage.registryMetadata
56-
}
45+
/// The default localization for resources.
46+
public let defaultLocalization: String?
5747

58-
struct Storage: Hashable {
59-
/// The underlying package reference.
60-
public let underlying: Package
61-
62-
/// The targets contained in the package.
63-
public let targets: [ResolvedTarget]
64-
65-
/// The products produced by the package.
66-
public let products: [ResolvedProduct]
67-
68-
/// The dependencies of the package.
69-
public let dependencies: [ResolvedPackage]
70-
71-
/// The default localization for resources.
72-
public let defaultLocalization: String?
73-
74-
/// The list of platforms that are supported by this target.
75-
public let platforms: [SupportedPlatform]
76-
77-
/// If the given package's source is a registry release, this provides additional metadata and signature information.
78-
public let registryMetadata: RegistryReleaseMetadata?
79-
}
48+
/// The list of platforms that are supported by this target.
49+
public let platforms: [SupportedPlatform]
50+
51+
/// If the given package's source is a registry release, this provides additional metadata and signature information.
52+
public let registryMetadata: RegistryReleaseMetadata?
8053

81-
private let storage: Storage
8254

8355
private let platformVersionProvider: PlatformVersionProvider
8456

85-
public convenience init(
57+
public init(
8658
package: Package,
8759
defaultLocalization: String?,
8860
platforms: [SupportedPlatform],
@@ -92,44 +64,25 @@ public final class ResolvedPackage {
9264
registryMetadata: RegistryReleaseMetadata?,
9365
platformVersionProvider: PlatformVersionProvider
9466
) {
95-
self.init(
96-
storage: .init(
97-
underlying: package,
98-
targets: targets,
99-
products: products,
100-
dependencies: dependencies,
101-
defaultLocalization: defaultLocalization,
102-
platforms: platforms,
103-
registryMetadata: registryMetadata
104-
),
105-
platformVersionProvider: platformVersionProvider
106-
)
107-
}
108-
109-
init(storage: Storage, platformVersionProvider: PlatformVersionProvider) {
110-
self.storage = storage
67+
self.underlying = package
68+
self.targets = targets
69+
self.products = products
70+
self.dependencies = dependencies
71+
self.defaultLocalization = defaultLocalization
72+
self.platforms = platforms
73+
self.registryMetadata = registryMetadata
11174
self.platformVersionProvider = platformVersionProvider
11275
}
11376

11477
public func getDerived(for platform: Platform, usingXCTest: Bool) -> SupportedPlatform {
11578
self.platformVersionProvider.getDerived(
116-
declared: self.storage.platforms,
79+
declared: self.platforms,
11780
for: platform,
11881
usingXCTest: usingXCTest
11982
)
12083
}
12184
}
12285

123-
extension ResolvedPackage: Hashable {
124-
public func hash(into hasher: inout Hasher) {
125-
hasher.combine(self.storage)
126-
}
127-
128-
public static func == (lhs: ResolvedPackage, rhs: ResolvedPackage) -> Bool {
129-
lhs.storage == rhs.storage
130-
}
131-
}
132-
13386
extension ResolvedPackage: CustomStringConvertible {
13487
public var description: String {
13588
return "<ResolvedPackage: \(self.identity)>"

0 commit comments

Comments
 (0)