@@ -329,8 +329,10 @@ package actor BuildServerManager: QueueBasedMessageHandler {
329
329
/// preferred over `buildServerAdapter` because no messages must be sent to the build server before initialization
330
330
/// finishes.
331
331
private var buildServerAdapterAfterInitialized : BuildServerAdapter ? {
332
- get async {
333
- _ = await initializeResult. value
332
+ get async throws {
333
+ guard await initializeResult. value != nil else {
334
+ throw ResponseError . unknown ( " Build server failed to initialize " )
335
+ }
334
336
return buildServerAdapter
335
337
}
336
338
}
@@ -505,8 +507,9 @@ package actor BuildServerManager: QueueBasedMessageHandler {
505
507
logger. fault ( " If we have a connectionToBuildServer, we must have had a buildServerSpec " )
506
508
return nil
507
509
}
508
- let initializeResponse = await orLog ( " Initializing build server " ) {
509
- try await buildServerAdapter. send (
510
+ let initializeResponse : InitializeBuildResponse ?
511
+ do {
512
+ initializeResponse = try await buildServerAdapter. send (
510
513
InitializeBuildRequest (
511
514
displayName: " SourceKit-LSP " ,
512
515
version: " " ,
@@ -515,7 +518,19 @@ package actor BuildServerManager: QueueBasedMessageHandler {
515
518
capabilities: BuildClientCapabilities ( languageIds: [ . c, . cpp, . objective_c, . objective_cpp, . swift] )
516
519
)
517
520
)
521
+ } catch {
522
+ initializeResponse = nil
523
+ let errorMessage : String
524
+ if let error = error as? ResponseError {
525
+ errorMessage = error. message
526
+ } else {
527
+ errorMessage = " \( error) "
528
+ }
529
+ connectionToClient. send (
530
+ ShowMessageNotification ( type: . error, message: " Failed to initialize build server: \( errorMessage) " )
531
+ )
518
532
}
533
+
519
534
if let initializeResponse, !( initializeResponse. sourceKitData? . sourceKitOptionsProvider ?? false ) ,
520
535
case . external( let externalBuildServerAdapter) = buildServerAdapter
521
536
{
@@ -559,7 +574,7 @@ package actor BuildServerManager: QueueBasedMessageHandler {
559
574
package func shutdown( ) async {
560
575
// Clear any pending work done progresses from the build server.
561
576
self . workDoneProgressManagers. removeAll ( )
562
- guard let buildServerAdapter = await self . buildServerAdapterAfterInitialized else {
577
+ guard let buildServerAdapter = try ? await self . buildServerAdapterAfterInitialized else {
563
578
return
564
579
}
565
580
await orLog ( " Sending shutdown request to build server " ) {
@@ -898,7 +913,7 @@ package actor BuildServerManager: QueueBasedMessageHandler {
898
913
in target: BuildTargetIdentifier ,
899
914
language: Language
900
915
) async throws -> FileBuildSettings ? {
901
- guard let buildServerAdapter = await buildServerAdapterAfterInitialized else {
916
+ guard let buildServerAdapter = try await buildServerAdapterAfterInitialized else {
902
917
return nil
903
918
}
904
919
let request = TextDocumentSourceKitOptionsRequest (
@@ -1158,7 +1173,7 @@ package actor BuildServerManager: QueueBasedMessageHandler {
1158
1173
}
1159
1174
1160
1175
private func buildTargets( ) async throws -> [ BuildTargetIdentifier : BuildTargetInfo ] {
1161
- guard let buildServerAdapter = await buildServerAdapterAfterInitialized else {
1176
+ guard let buildServerAdapter = try await buildServerAdapterAfterInitialized else {
1162
1177
return [ : ]
1163
1178
}
1164
1179
@@ -1198,7 +1213,7 @@ package actor BuildServerManager: QueueBasedMessageHandler {
1198
1213
}
1199
1214
1200
1215
package func sourceFiles( in targets: Set < BuildTargetIdentifier > ) async throws -> [ SourcesItem ] {
1201
- guard let buildServerAdapter = await buildServerAdapterAfterInitialized, !targets. isEmpty else {
1216
+ guard let buildServerAdapter = try await buildServerAdapterAfterInitialized, !targets. isEmpty else {
1202
1217
return [ ]
1203
1218
}
1204
1219
@@ -1414,7 +1429,7 @@ package actor BuildServerManager: QueueBasedMessageHandler {
1414
1429
// MARK: Informing BuildSererManager about changes
1415
1430
1416
1431
package func filesDidChange( _ events: [ FileEvent ] ) async {
1417
- if let buildServerAdapter = await buildServerAdapterAfterInitialized {
1432
+ if let buildServerAdapter = try ? await buildServerAdapterAfterInitialized {
1418
1433
await buildServerAdapter. send ( OnWatchedFilesDidChangeNotification ( changes: events) )
1419
1434
}
1420
1435
0 commit comments