@@ -83,7 +83,7 @@ public actor SwiftPMWorkspace {
83
83
var watchedFiles : [ DocumentURI : Language ] = [ : ]
84
84
85
85
/// This callback is informed when `reloadPackage` starts and ends executing.
86
- var reloadPackageStatusCallback : ( ReloadPackageStatus ) -> Void
86
+ var reloadPackageStatusCallback : ( ReloadPackageStatus ) async -> Void
87
87
88
88
89
89
/// Creates a build system using the Swift Package Manager, if this workspace is a package.
@@ -99,7 +99,7 @@ public actor SwiftPMWorkspace {
99
99
toolchainRegistry: ToolchainRegistry ,
100
100
fileSystem: FileSystem = localFileSystem,
101
101
buildSetup: BuildSetup ,
102
- reloadPackageStatusCallback: @escaping ( ReloadPackageStatus ) -> Void = { _ in }
102
+ reloadPackageStatusCallback: @escaping ( ReloadPackageStatus ) async -> Void = { _ in }
103
103
) async throws {
104
104
self . workspacePath = workspacePath
105
105
self . fileSystem = fileSystem
@@ -164,7 +164,7 @@ public actor SwiftPMWorkspace {
164
164
url: URL ,
165
165
toolchainRegistry: ToolchainRegistry ,
166
166
buildSetup: BuildSetup ,
167
- reloadPackageStatusCallback: @escaping ( ReloadPackageStatus ) -> Void
167
+ reloadPackageStatusCallback: @escaping ( ReloadPackageStatus ) async -> Void
168
168
) async {
169
169
do {
170
170
try await self . init (
@@ -189,11 +189,7 @@ extension SwiftPMWorkspace {
189
189
/// (Re-)load the package settings by parsing the manifest and resolving all the targets and
190
190
/// dependencies.
191
191
func reloadPackage( ) async throws {
192
- reloadPackageStatusCallback ( . start)
193
- defer {
194
- reloadPackageStatusCallback ( . end)
195
- }
196
-
192
+ await reloadPackageStatusCallback ( . start)
197
193
198
194
let observabilitySystem = ObservabilitySystem ( { scope, diagnostic in
199
195
log ( diagnostic. description, level: diagnostic. severity. asLogLevel)
@@ -241,10 +237,14 @@ extension SwiftPMWorkspace {
241
237
return td
242
238
} )
243
239
244
- guard let delegate = self . delegate else { return }
240
+ guard let delegate = self . delegate else {
241
+ await reloadPackageStatusCallback ( . end)
242
+ return
243
+ }
245
244
let changedFiles = Set < DocumentURI > ( self . watchedFiles. keys)
246
245
await delegate. fileBuildSettingsChanged ( changedFiles)
247
246
await delegate. fileHandlingCapabilityChanged ( )
247
+ await reloadPackageStatusCallback ( . end)
248
248
}
249
249
}
250
250
0 commit comments