diff --git a/Sources/Commands/PackageCommands/EditCommands.swift b/Sources/Commands/PackageCommands/EditCommands.swift index 5509c2ee51f..d160075a844 100644 --- a/Sources/Commands/PackageCommands/EditCommands.swift +++ b/Sources/Commands/PackageCommands/EditCommands.swift @@ -37,7 +37,6 @@ extension SwiftPackageCommand { var packageIdentity: String func run(_ swiftCommandState: SwiftCommandState) async throws { - try await swiftCommandState.resolve() let workspace = try swiftCommandState.getActiveWorkspace() // Put the dependency in edit mode. @@ -66,7 +65,6 @@ extension SwiftPackageCommand { var packageIdentity: String func run(_ swiftCommandState: SwiftCommandState) async throws { - try await swiftCommandState.resolve() let workspace = try swiftCommandState.getActiveWorkspace() try await workspace.unedit( diff --git a/Sources/PackageGraph/ModulesGraph+Loading.swift b/Sources/PackageGraph/ModulesGraph+Loading.swift index 50020c2f602..af7da190386 100644 --- a/Sources/PackageGraph/ModulesGraph+Loading.swift +++ b/Sources/PackageGraph/ModulesGraph+Loading.swift @@ -74,6 +74,7 @@ extension ModulesGraph { let rootDependencyNodes = try root.dependencies.lazy.filter { requiredDependencies.contains($0.packageRef) } .compactMap { dependency in try manifestMap[dependency.identity].map { + try GraphLoadingNode( identity: dependency.identity, manifest: $0.manifest, @@ -295,7 +296,7 @@ private func checkAllDependenciesAreUsed( // Skip this check if traits are enabled since it is valid to add a dependency just // to enable traits on it. This is useful if there is a transitive dependency in the graph - // that can be configured by enabling traits e.g. the depdency has a trait for its logging + // that can be configured by enabling traits e.g. the dependency has a trait for its logging // behaviour. This allows the root package to configure traits of transitive dependencies // without emitting an unused dependency warning. if !dependency.enabledTraits.isEmpty { diff --git a/Sources/Workspace/Workspace+Manifests.swift b/Sources/Workspace/Workspace+Manifests.swift index 1eaaccba606..5c0f58175e6 100644 --- a/Sources/Workspace/Workspace+Manifests.swift +++ b/Sources/Workspace/Workspace+Manifests.swift @@ -202,32 +202,15 @@ extension Workspace { } } - let rootEnabledTraitsMap: [PackageIdentity: Set] = root.manifests - .reduce(into: [PackageIdentity: Set]()) { traitMap, manifest in - traitMap[manifest.key] = root.enabledTraits[manifest.key] - } - - let allRootEnabledTraits = rootEnabledTraitsMap.values.flatMap { $0 } - - let rootDependenciesEnabledTraitsMap = root.dependencies - .reduce(into: [PackageIdentity: Set]()) { traitMap, dependency in - let explicitlyEnabledTraits = dependency.traits?.filter { - guard let conditionTraits = $0.condition?.traits else { - return true - } - return !conditionTraits.intersection(allRootEnabledTraits).isEmpty - }.map(\.name) ?? [] - - traitMap[dependency.identity] = Set(explicitlyEnabledTraits) - } + let allRootEnabledTraits = root.enabledTraits.flatMap({ Set($0.value) }) var unusedIdentities: OrderedCollections.OrderedSet = [] var inputIdentities: OrderedCollections.OrderedSet = [] let inputNodes: [GraphLoadingNode] = try root.packages.map { identity, package in inputIdentities.append(package.reference) - var traits: Set? = rootEnabledTraitsMap[package.reference.identity] ?? [] - + var traits: Set? = root.enabledTraits[package.reference.identity] + let node = try GraphLoadingNode( identity: identity, manifest: package.manifest, @@ -239,7 +222,7 @@ extension Workspace { let package = dependency.packageRef inputIdentities.append(package) return try manifestsMap[dependency.identity].map { manifest in - var traits: Set? = rootDependenciesEnabledTraitsMap[dependency.identity] ?? [] + var traits: Set? = root.enabledTraits[dependency.identity] return try GraphLoadingNode( identity: dependency.identity, diff --git a/Sources/_InternalTestSupport/MockManifestLoader.swift b/Sources/_InternalTestSupport/MockManifestLoader.swift index 3245d7d8737..c46cd3d327a 100644 --- a/Sources/_InternalTestSupport/MockManifestLoader.swift +++ b/Sources/_InternalTestSupport/MockManifestLoader.swift @@ -88,7 +88,7 @@ extension ManifestLoader { dependencyMapper: DependencyMapper? = .none, fileSystem: FileSystem, observabilityScope: ObservabilityScope - ) async throws -> Manifest{ + ) async throws -> Manifest { let packageIdentity: PackageIdentity let packageLocation: String switch packageKind { @@ -135,7 +135,7 @@ extension ManifestLoader { dependencyMapper: DependencyMapper? = .none, fileSystem: FileSystem, observabilityScope: ObservabilityScope - ) async throws -> Manifest{ + ) async throws -> Manifest { let packageIdentity: PackageIdentity let packageLocation: String switch packageKind { diff --git a/Sources/_InternalTestSupport/MockPackage.swift b/Sources/_InternalTestSupport/MockPackage.swift index 0185514e486..50cce96ee5b 100644 --- a/Sources/_InternalTestSupport/MockPackage.swift +++ b/Sources/_InternalTestSupport/MockPackage.swift @@ -22,7 +22,7 @@ public struct MockPackage { public let products: [MockProduct] public let dependencies: [MockDependency] public let versions: [String?] - package let traits: Set + public let traits: Set /// Provides revision identifier for the given version. A random identifier might be assigned if this is nil. public let revisionProvider: ((String) -> String)? // FIXME: This should be per-version.