Skip to content

Commit 3d9e171

Browse files
authored
Merge branch 'swiftlang:main' into pif_updates
2 parents 051a4de + ec2a626 commit 3d9e171

File tree

31 files changed

+974
-228
lines changed

31 files changed

+974
-228
lines changed

.swift-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6.1.0
1+
6.1.2

Fixtures/Miscellaneous/Plugins/PluginsAndSnippets/Plugins/PluginScriptTarget/Script.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import PackagePlugin
44
struct PluginScript: CommandPlugin {
55

66
func performCommand(context: PluginContext, arguments: [String]) async throws {
7-
dump(context)
7+
if !arguments.contains("--skip-dump") {
8+
dump(context)
9+
}
810
if let target = try context.package.targets(named: ["MySnippet"]).first as? SourceModuleTarget {
911
print("type of snippet target: \(target.kind)")
1012
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// swift-tools-version: 6.1
2+
3+
import PackageDescription
4+
5+
let package = Package(
6+
name: "PackageConditionalDeps",
7+
products: [
8+
.library(
9+
name: "PackageConditionalDeps",
10+
targets: ["PackageConditionalDeps"]
11+
),
12+
],
13+
traits: [
14+
.default(enabledTraits: ["EnablePackage1Dep"]),
15+
"EnablePackage1Dep",
16+
"EnablePackage2Dep"
17+
],
18+
dependencies: [
19+
.package(path: "../Package1"),
20+
.package(path: "../Package2"),
21+
],
22+
targets: [
23+
.target(
24+
name: "PackageConditionalDeps",
25+
dependencies: [
26+
.product(
27+
name: "Package1Library1",
28+
package: "Package1",
29+
condition: .when(traits: ["EnablePackage1Dep"])
30+
),
31+
.product(
32+
name: "Package2Library1",
33+
package: "Package2",
34+
condition: .when(traits: ["EnablePackage2Dep"])
35+
)
36+
]
37+
),
38+
]
39+
)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
public func nothingHappens() {
2+
// Do nothing.
3+
}

Package.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ let swiftPMProduct = (
8080
"LLBuildManifest",
8181
"SourceKitLSPAPI",
8282
"SPMLLBuild",
83-
"SwiftBuildSupport",
8483
]
8584
)
8685

Sources/Commands/PackageCommands/DumpCommands.swift

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,16 @@ struct DumpSymbolGraph: AsyncSwiftCommand {
5656
enableAllTraits: true,
5757
cacheBuildManifest: false
5858
)
59-
// TODO pass along the various flags as associated values to the symbol graph build output (e.g. includeSPISymbols)
60-
let buildResult = try await buildSystem.build(subset: .allExcludingTests, buildOutputs: [.symbolGraph, .buildPlan])
59+
let buildResult = try await buildSystem.build(subset: .allExcludingTests, buildOutputs: [.symbolGraph(
60+
BuildOutput.SymbolGraphOptions(
61+
prettyPrint: prettyPrint,
62+
minimumAccessLevel: .accessLevel(minimumAccessLevel),
63+
includeSynthesized: !skipSynthesizedMembers,
64+
includeSPI: includeSPISymbols,
65+
emitExtensionBlocks: extensionBlockSymbolBehavior != .omitExtensionBlockSymbols,
66+
// TODO skip inherited docs
67+
)
68+
), .buildPlan])
6169

6270
let symbolGraphDirectory = try swiftCommandState.productsBuildParameters.dataPath.appending("symbolgraph")
6371

@@ -189,3 +197,9 @@ struct DumpPIF: AsyncSwiftCommand {
189197
return .init(wantsMultipleTestProducts: true)
190198
}
191199
}
200+
201+
fileprivate extension BuildOutput.SymbolGraphAccessLevel {
202+
fileprivate static func accessLevel(_ accessLevel: SymbolGraphExtract.AccessLevel) -> BuildOutput.SymbolGraphAccessLevel {
203+
return BuildOutput.SymbolGraphAccessLevel.init(rawValue: accessLevel.rawValue)!
204+
}
205+
}

Sources/Commands/Utilities/PluginDelegate.swift

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,7 @@ final class PluginDelegate: PluginInvocationDelegate {
413413
)
414414

415415
// Build the target, if needed. We are interested in symbol graph (ideally) or a build plan.
416-
// TODO pass along the options as associated values to the symbol graph build output (e.g. includeSPI)
417-
let buildResult = try await buildSystem.build(subset: .target(targetName), buildOutputs: [.symbolGraph, .buildPlan])
416+
let buildResult = try await buildSystem.build(subset: .target(targetName), buildOutputs: [.symbolGraph(options), .buildPlan])
418417

419418
if let symbolGraph = buildResult.symbolGraph {
420419
let path = (try swiftCommandState.productsBuildParameters.buildPath)
@@ -505,3 +504,33 @@ extension BuildSystem {
505504
}
506505
}
507506
}
507+
508+
extension BuildOutput {
509+
static func symbolGraph(_ options: PluginInvocationSymbolGraphOptions) -> BuildOutput {
510+
return .symbolGraph(SymbolGraphOptions(
511+
minimumAccessLevel: .accessLevel(options.minimumAccessLevel),
512+
includeSynthesized: options.includeSynthesized,
513+
includeSPI: options.includeSPI,
514+
emitExtensionBlocks: options.emitExtensionBlocks
515+
))
516+
}
517+
}
518+
519+
fileprivate extension BuildOutput.SymbolGraphAccessLevel {
520+
fileprivate static func accessLevel(_ accessLevel: PluginInvocationSymbolGraphOptions.AccessLevel) -> BuildOutput.SymbolGraphAccessLevel {
521+
return switch accessLevel {
522+
case .private:
523+
.private
524+
case .fileprivate:
525+
.fileprivate
526+
case .internal:
527+
.internal
528+
case .package:
529+
.package
530+
case .public:
531+
.public
532+
case .open:
533+
.open
534+
}
535+
}
536+
}

Sources/PackageGraph/ModulesGraph.swift

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -505,26 +505,14 @@ public func loadModulesGraph(
505505
return condition.isSatisfied(by: parentTraits)
506506
}.map(\.name)
507507

508-
var enabledTraitsSet = explicitlyEnabledTraits.flatMap { Set($0) }
509-
let precomputedTraits = enabledTraitsMap[dependency.identity]
510-
511-
if precomputedTraits == ["default"],
512-
let enabledTraitsSet {
513-
enabledTraitsMap[dependency.identity] = enabledTraitsSet
514-
} else {
515-
// unify traits
516-
enabledTraitsSet?.formUnion(precomputedTraits)
517-
if let enabledTraitsSet {
518-
enabledTraitsMap[dependency.identity] = enabledTraitsSet
519-
}
508+
if let enabledTraitsSet = explicitlyEnabledTraits.flatMap({ Set($0) }) {
509+
let calculatedTraits = try manifest.enabledTraits(
510+
using: enabledTraitsSet,
511+
.init(parent)
512+
)
513+
enabledTraitsMap[dependency.identity] = calculatedTraits
520514
}
521515

522-
let calculatedTraits = try manifest.enabledTraits(
523-
using: enabledTraitsSet ?? ["default"],
524-
.init(parent)
525-
)
526-
527-
enabledTraitsMap[dependency.identity] = calculatedTraits
528516
let result = visited.insert(dependency.identity)
529517
if result.inserted {
530518
try dependencies(of: manifest, dependency.productFilter)

Sources/PackageGraph/PackageGraphRoot.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ public struct PackageGraphRoot {
164164
return condition.isSatisfied(by: rootEnabledTraits)
165165
}.map(\.name)
166166

167-
var enabledTraitsSet = enabledTraits.flatMap { Set($0) } ?? ["default"]
168-
enabledTraitsSet.formUnion(enabledTraitsMap[dep.identity])
167+
var enabledTraitsSet = enabledTraitsMap[dep.identity]
168+
enabledTraitsSet.formUnion(enabledTraits.flatMap({ Set($0) }) ?? [])
169169

170170
return PackageContainerConstraint(
171171
package: dep.packageRef,

Sources/PackageGraph/PackageModel+Extensions.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ extension Manifest {
4242
return condition.isSatisfied(by: enabledTraits)
4343
}.map(\.name)
4444

45-
var enabledTraitsSet = explicitlyEnabledTraits.flatMap({ Set($0) }) ?? ["default"]
45+
let enabledTraitsSet = explicitlyEnabledTraits.flatMap({ Set($0) }) ?? ["default"]
4646

4747
return PackageContainerConstraint(
4848
package: $0.packageRef,

0 commit comments

Comments
 (0)