11import CopilotForXcodeKit
22import Foundation
3+ import Logger
34import Preferences
45import SuggestionModel
56import SuggestionProvider
@@ -31,12 +32,21 @@ public final class BuiltinExtensionSuggestionServiceProvider<
3132 var service : CopilotForXcodeKit . SuggestionServiceType ? {
3233 extensionManager. extensions. first { $0 is T } ? . suggestionService
3334 }
35+
36+ struct BuiltinExtensionSuggestionServiceNotFoundError : Error , LocalizedError {
37+ var errorDescription : String ? {
38+ " Builtin suggestion service not found. "
39+ }
40+ }
3441
3542 public func getSuggestions(
3643 _ request: SuggestionProvider . SuggestionRequest ,
3744 workspaceInfo: CopilotForXcodeKit . WorkspaceInfo
3845 ) async throws -> [ SuggestionModel . CodeSuggestion ] {
39- guard let service else { return [ ] }
46+ guard let service else {
47+ Logger . service. error ( " Builtin suggestion service not found. " )
48+ throw BuiltinExtensionSuggestionServiceNotFoundError ( )
49+ }
4050 return try await service. getSuggestions (
4151 . init(
4252 fileURL: request. fileURL,
@@ -61,23 +71,32 @@ public final class BuiltinExtensionSuggestionServiceProvider<
6171 public func cancelRequest(
6272 workspaceInfo: CopilotForXcodeKit . WorkspaceInfo
6373 ) async {
64- guard let service else { return }
74+ guard let service else {
75+ Logger . service. error ( " Builtin suggestion service not found. " )
76+ return
77+ }
6578 await service. cancelRequest ( workspace: workspaceInfo)
6679 }
6780
6881 public func notifyAccepted(
6982 _ suggestion: SuggestionModel . CodeSuggestion ,
7083 workspaceInfo: CopilotForXcodeKit . WorkspaceInfo
7184 ) async {
72- guard let service else { return }
85+ guard let service else {
86+ Logger . service. error ( " Builtin suggestion service not found. " )
87+ return
88+ }
7389 await service. notifyAccepted ( suggestion. converted, workspace: workspaceInfo)
7490 }
7591
7692 public func notifyRejected(
7793 _ suggestions: [ SuggestionModel . CodeSuggestion ] ,
7894 workspaceInfo: CopilotForXcodeKit . WorkspaceInfo
7995 ) async {
80- guard let service else { return }
96+ guard let service else {
97+ Logger . service. error ( " Builtin suggestion service not found. " )
98+ return
99+ }
81100 await service. notifyRejected ( suggestions. map ( \. converted) , workspace: workspaceInfo)
82101 }
83102}
0 commit comments