@@ -327,11 +327,9 @@ package actor BuildSystemManager: QueueBasedMessageHandler {
327327
328328 private var cachedTargetSources = RequestCache < BuildTargetSourcesRequest > ( )
329329
330- /// The parameters with which `SourceFilesAndDirectories` can be cached in `cachedSourceFilesAndDirectories`.
331- private struct SourceFilesAndDirectoriesKey : Hashable {
332- let includeNonBuildableFiles : Bool
333- let sourcesItems : [ SourcesItem ]
334- }
330+ /// `SourceFilesAndDirectories` is a global property that only gets reset when the build targets change and thus
331+ /// has no real key.
332+ private struct SourceFilesAndDirectoriesKey : Hashable { }
335333
336334 private struct SourceFilesAndDirectories {
337335 /// The source files in the workspace, ie. all `SourceItem`s that have `kind == .file`.
@@ -1045,27 +1043,22 @@ package actor BuildSystemManager: QueueBasedMessageHandler {
10451043 ///
10461044 /// `includeNonBuildableFiles` determines whether non-buildable files should be included.
10471045 private func sourceFilesAndDirectories( includeNonBuildableFiles: Bool ) async throws -> SourceFilesAndDirectories {
1048- let targets = try await self . buildTargets ( )
1049- let sourcesItems = try await self . sourceFiles ( in: Set ( targets. keys) )
1050-
1051- let key = SourceFilesAndDirectoriesKey (
1052- includeNonBuildableFiles: includeNonBuildableFiles,
1053- sourcesItems: sourcesItems
1054- )
1046+ return try await cachedSourceFilesAndDirectories. get ( SourceFilesAndDirectoriesKey ( ) , isolation: self ) { key in
1047+ let targets = try await self . buildTargets ( )
1048+ let sourcesItems = try await self . sourceFiles ( in: Set ( targets. keys) )
10551049
1056- return try await cachedSourceFilesAndDirectories. get ( key, isolation: self ) { key in
10571050 var files : [ DocumentURI : SourceFileInfo ] = [ : ]
10581051 var directories : [ DocumentURI : SourceFileInfo ] = [ : ]
1059- for sourcesItem in key . sourcesItems {
1052+ for sourcesItem in sourcesItems {
10601053 let target = targets [ sourcesItem. target] ? . target
10611054 let isPartOfRootProject = !( target? . tags. contains ( . dependency) ?? false )
10621055 let mayContainTests = target? . tags. contains ( . test) ?? true
1063- if !key . includeNonBuildableFiles && ( target? . tags. contains ( . notBuildable) ?? false ) {
1056+ if !includeNonBuildableFiles && ( target? . tags. contains ( . notBuildable) ?? false ) {
10641057 continue
10651058 }
10661059
10671060 for sourceItem in sourcesItem. sources {
1068- if !key . includeNonBuildableFiles && sourceItem. sourceKitData? . isHeader ?? false {
1061+ if !includeNonBuildableFiles && sourceItem. sourceKitData? . isHeader ?? false {
10691062 continue
10701063 }
10711064 let info = SourceFileInfo (
0 commit comments