Skip to content

Commit 08faa19

Browse files
committed
Make LanguageService initializer non-failable
1 parent 45d5bfb commit 08faa19

File tree

5 files changed

+12
-10
lines changed

5 files changed

+12
-10
lines changed

Sources/ClangLanguageService/ClangLanguageService.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,15 +109,17 @@ package actor ClangLanguageService: LanguageService, MessageHandler {
109109

110110
/// Creates a language server for the given client referencing the clang binary specified in `toolchain`.
111111
/// Returns `nil` if `clangd` can't be found.
112-
package init?(
112+
package init(
113113
sourceKitLSPServer: SourceKitLSPServer,
114114
toolchain: Toolchain,
115115
options: SourceKitLSPOptions,
116116
hooks: Hooks,
117117
workspace: Workspace
118118
) async throws {
119119
guard let clangdPath = toolchain.clangd else {
120-
return nil
120+
throw ResponseError.unknown(
121+
"Cannot create SwiftLanguage service because \(toolchain.identifier) does not contain clangd"
122+
)
121123
}
122124
self.clangPath = toolchain.clang
123125
self.clangdPath = clangdPath

Sources/DocumentationLanguageService/DocumentationLanguageService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ package actor DocumentationLanguageService: LanguageService, Sendable {
3434

3535
package static var builtInCommands: [String] { [] }
3636

37-
package init?(
37+
package init(
3838
sourceKitLSPServer: SourceKitLSPServer,
3939
toolchain: Toolchain,
4040
options: SourceKitLSPOptions,

Sources/SourceKitLSP/LanguageService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ package protocol LanguageService: AnyObject, Sendable {
104104

105105
// MARK: - Creation
106106

107-
init?(
107+
init(
108108
sourceKitLSPServer: SourceKitLSPServer,
109109
toolchain: Toolchain,
110110
options: SourceKitLSPOptions,

Sources/SourceKitLSP/SourceKitLSPServer.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -492,10 +492,6 @@ package actor SourceKitLSPServer {
492492
workspace: workspace
493493
)
494494

495-
guard let service else {
496-
return nil
497-
}
498-
499495
let pid = Int(ProcessInfo.processInfo.processIdentifier)
500496
let resp = try await service.initialize(
501497
InitializeRequest(

Sources/SwiftLanguageService/SwiftLanguageService.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,18 @@ package actor SwiftLanguageService: LanguageService, Sendable {
197197
/// `reopenDocuments` is a closure that will be called if sourcekitd crashes and the `SwiftLanguageService` asks its
198198
/// parent server to reopen all of its documents.
199199
/// Returns `nil` if `sourcekitd` couldn't be found.
200-
package init?(
200+
package init(
201201
sourceKitLSPServer: SourceKitLSPServer,
202202
toolchain: Toolchain,
203203
options: SourceKitLSPOptions,
204204
hooks: Hooks,
205205
workspace: Workspace
206206
) async throws {
207-
guard let sourcekitd = toolchain.sourcekitd else { return nil }
207+
guard let sourcekitd = toolchain.sourcekitd else {
208+
throw ResponseError.unknown(
209+
"Cannot create SwiftLanguage service because \(toolchain.identifier) does not contain sourcekitd"
210+
)
211+
}
208212
self.sourcekitdPath = sourcekitd
209213
self.sourceKitLSPServer = sourceKitLSPServer
210214
self.swiftFormat = toolchain.swiftFormat

0 commit comments

Comments
 (0)