@@ -205,9 +205,8 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
205
205
private var buildDescription : SourceKitLSPAPI . BuildDescription ?
206
206
207
207
/// Maps target ids to their SwiftPM build target.
208
- private var swiftPMTargets : [ BuildTargetIdentifier : SwiftBuildTarget ] = [ : ]
209
-
210
- private var targetDependencies : [ BuildTargetIdentifier : Set < BuildTargetIdentifier > ] = [ : ]
208
+ private var swiftPMTargets :
209
+ [ BuildTargetIdentifier : ( target: SwiftBuildTarget , dependencies: Set < BuildTargetIdentifier > ) ] = [ : ]
211
210
212
211
static package func projectRoot(
213
212
for path: TSCBasic . AbsolutePath ,
@@ -402,19 +401,16 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
402
401
/// with only some properties modified.
403
402
404
403
self . swiftPMTargets = [ : ]
405
- self . targetDependencies = [ : ]
406
404
407
- buildDescription. traverseModules { buildTarget, parent , depth in
405
+ buildDescription. traverseModules { buildTarget, dependencies in
408
406
let targetIdentifier = orLog ( " Getting build target identifier " ) { try BuildTargetIdentifier ( buildTarget) }
409
407
guard let targetIdentifier else {
410
408
return
411
409
}
412
- if let parent,
413
- let parentIdentifier = orLog ( " Getting parent build target identifier " , { try BuildTargetIdentifier ( parent) } )
414
- {
415
- self . targetDependencies [ parentIdentifier, default: [ ] ] . insert ( targetIdentifier)
410
+ let dependencies = dependencies. compactMap { dependency in
411
+ orLog ( " Getting build target identifier of dependency " ) { try BuildTargetIdentifier ( dependency) }
416
412
}
417
- swiftPMTargets [ targetIdentifier] = buildTarget
413
+ swiftPMTargets [ targetIdentifier] = ( buildTarget, Set ( dependencies ) )
418
414
}
419
415
420
416
connectionToSourceKitLSP. send ( OnBuildTargetDidChangeNotification ( changes: nil ) )
@@ -454,18 +450,18 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
454
450
package func buildTargets( request: WorkspaceBuildTargetsRequest ) async throws -> WorkspaceBuildTargetsResponse {
455
451
var targets = self . swiftPMTargets. map { ( targetId, target) in
456
452
var tags : [ BuildTargetTag ] = [ . test]
457
- if !target. isPartOfRootPackage {
453
+ if !target. target . isPartOfRootPackage {
458
454
tags. append ( . dependency)
459
455
}
460
456
return BuildTarget (
461
457
id: targetId,
462
- displayName: target. name,
458
+ displayName: target. target . name,
463
459
baseDirectory: nil ,
464
460
tags: tags,
465
461
capabilities: BuildTargetCapabilities ( ) ,
466
462
// Be conservative with the languages that might be used in the target. SourceKit-LSP doesn't use this property.
467
463
languageIds: [ . c, . cpp, . objective_c, . objective_cpp, . swift] ,
468
- dependencies: self . targetDependencies [ targetId , default : [ ] ] . sorted { $0. uri. stringValue < $1. uri. stringValue } ,
464
+ dependencies: target . dependencies . sorted { $0. uri. stringValue < $1. uri. stringValue } ,
469
465
dataKind: . sourceKit,
470
466
data: SourceKitBuildTarget ( toolchain: toolchain. path? . asURI) . encodeToLSPAny ( )
471
467
)
@@ -503,7 +499,7 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
503
499
)
504
500
)
505
501
}
506
- guard let swiftPMTarget = self . swiftPMTargets [ target] else {
502
+ guard let swiftPMTarget = self . swiftPMTargets [ target] ? . target else {
507
503
continue
508
504
}
509
505
var sources = swiftPMTarget. sources. map {
@@ -535,7 +531,7 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
535
531
return try settings ( forPackageManifest: path)
536
532
}
537
533
538
- guard let swiftPMTarget = self . swiftPMTargets [ request. target] else {
534
+ guard let swiftPMTarget = self . swiftPMTargets [ request. target] ? . target else {
539
535
logger. error ( " Did not find target \( request. target. forLogging) " )
540
536
return nil
541
537
}
@@ -630,7 +626,7 @@ package actor SwiftPMBuildSystem: BuiltInBuildSystem {
630
626
logMessageToIndexLog (
631
627
taskID,
632
628
"""
633
- Preparing \( self . swiftPMTargets [ target] ? . name ?? target. uri. stringValue)
629
+ Preparing \( self . swiftPMTargets [ target] ? . target . name ?? target. uri. stringValue)
634
630
\( arguments. joined ( separator: " " ) )
635
631
"""
636
632
)
0 commit comments