diff --git a/Sources/SKCore/BuildServerBuildSystem.swift b/Sources/SKCore/BuildServerBuildSystem.swift index 61a6b2d0..3c4bf412 100644 --- a/Sources/SKCore/BuildServerBuildSystem.swift +++ b/Sources/SKCore/BuildServerBuildSystem.swift @@ -149,7 +149,7 @@ extension BuildServerBuildSystem: BuildSystem { /// Register the given file for build-system level change notifications, such as command /// line flag changes, dependency changes, etc. - public func registerForChangeNotifications(for uri: DocumentURI) { + public func registerForChangeNotifications(for uri: DocumentURI, language: Language) { let request = RegisterForChanges(uri: uri, action: .register) _ = self.buildServer?.send(request, queue: requestQueue, reply: { result in if let error = result.failure { diff --git a/Sources/SKCore/BuildSystem.swift b/Sources/SKCore/BuildSystem.swift index 18476fd6..488522b0 100644 --- a/Sources/SKCore/BuildSystem.swift +++ b/Sources/SKCore/BuildSystem.swift @@ -40,7 +40,7 @@ public protocol BuildSystem: AnyObject { /// Register the given file for build-system level change notifications, such /// as command line flag changes, dependency changes, etc. - func registerForChangeNotifications(for: DocumentURI) + func registerForChangeNotifications(for: DocumentURI, language: Language) /// Unregister the given file for build-system level change notifications, /// such as command line flag changes, dependency changes, etc. diff --git a/Sources/SKCore/BuildSystemList.swift b/Sources/SKCore/BuildSystemList.swift index 18c0ee04..74b4d66c 100644 --- a/Sources/SKCore/BuildSystemList.swift +++ b/Sources/SKCore/BuildSystemList.swift @@ -47,9 +47,9 @@ extension BuildSystemList: BuildSystem { /// Register the given file for build-system level change notifications, such as command /// line flag changes, dependency changes, etc. - public func registerForChangeNotifications(for uri: DocumentURI) { + public func registerForChangeNotifications(for uri: DocumentURI, language: Language) { // Only register with the primary build system, since we only use its delegate. - providers.first?.registerForChangeNotifications(for: uri) + providers.first?.registerForChangeNotifications(for: uri, language: language) } /// Unregister the given file for build-system level change notifications, such as command diff --git a/Sources/SKCore/CompilationDatabaseBuildSystem.swift b/Sources/SKCore/CompilationDatabaseBuildSystem.swift index ef281822..c7dcd66c 100644 --- a/Sources/SKCore/CompilationDatabaseBuildSystem.swift +++ b/Sources/SKCore/CompilationDatabaseBuildSystem.swift @@ -73,7 +73,7 @@ extension CompilationDatabaseBuildSystem: BuildSystem { } /// We don't support change watching. - public func registerForChangeNotifications(for: DocumentURI) {} + public func registerForChangeNotifications(for: DocumentURI, language: Language) {} /// We don't support change watching. public func unregisterForChangeNotifications(for: DocumentURI) {} diff --git a/Sources/SKCore/FallbackBuildSystem.swift b/Sources/SKCore/FallbackBuildSystem.swift index a00f9306..afb30a9d 100644 --- a/Sources/SKCore/FallbackBuildSystem.swift +++ b/Sources/SKCore/FallbackBuildSystem.swift @@ -51,7 +51,7 @@ public final class FallbackBuildSystem: BuildSystem { } /// We don't support change watching. - public func registerForChangeNotifications(for: DocumentURI) {} + public func registerForChangeNotifications(for: DocumentURI, language: Language) {} /// We don't support change watching. public func unregisterForChangeNotifications(for: DocumentURI) {} diff --git a/Sources/SKSwiftPMWorkspace/SwiftPMWorkspace.swift b/Sources/SKSwiftPMWorkspace/SwiftPMWorkspace.swift index 5b263c86..face6f41 100644 --- a/Sources/SKSwiftPMWorkspace/SwiftPMWorkspace.swift +++ b/Sources/SKSwiftPMWorkspace/SwiftPMWorkspace.swift @@ -224,7 +224,7 @@ extension SwiftPMWorkspace: BuildSystem { /// Register the given file for build-system level change notifications, such as command /// line flag changes, dependency changes, etc. - public func registerForChangeNotifications(for uri: DocumentURI) { + public func registerForChangeNotifications(for uri: DocumentURI, language: Language) { // TODO: Support for change detection (via file watching) } diff --git a/Sources/SourceKit/SourceKitServer.swift b/Sources/SourceKit/SourceKitServer.swift index a9030e60..5ba30f17 100644 --- a/Sources/SourceKit/SourceKitServer.swift +++ b/Sources/SourceKit/SourceKitServer.swift @@ -426,7 +426,8 @@ extension SourceKitServer { workspace.documentManager.open(note.params) let textDocument = note.params.textDocument - workspace.buildSettings.registerForChangeNotifications(for: textDocument.uri) + workspace.buildSettings.registerForChangeNotifications( + for: textDocument.uri, language: textDocument.language) if let service = languageService(for: textDocument.uri, textDocument.language, in: workspace) { service.openDocument(note.params) diff --git a/Tests/SKCoreTests/BuildServerBuildSystemTests.swift b/Tests/SKCoreTests/BuildServerBuildSystemTests.swift index 011980a4..3a7e9026 100644 --- a/Tests/SKCoreTests/BuildServerBuildSystemTests.swift +++ b/Tests/SKCoreTests/BuildServerBuildSystemTests.swift @@ -59,7 +59,7 @@ final class BuildServerBuildSystemTests: XCTestCase { let expectation = XCTestExpectation(description: "\(fileUrl) settings updated") let buildSystemDelegate = TestDelegate(settingsExpectations: [DocumentURI(fileUrl): expectation]) buildSystem.delegate = buildSystemDelegate - buildSystem.registerForChangeNotifications(for: DocumentURI(fileUrl)) + buildSystem.registerForChangeNotifications(for: DocumentURI(fileUrl), language: .swift) XCTAssertEqual(XCTWaiter.wait(for: [expectation], timeout: 15), .completed) } @@ -174,7 +174,7 @@ final class BuildServerBuildSystemTests: XCTestCase { data: .dictionary(["key": "value"])): expectation, ]) buildSystem.delegate = buildSystemDelegate - buildSystem.registerForChangeNotifications(for: DocumentURI(fileUrl)) + buildSystem.registerForChangeNotifications(for: DocumentURI(fileUrl), language: .swift) let result = XCTWaiter.wait(for: [expectation], timeout: 15) if result != .completed { diff --git a/Tests/SourceKitTests/BuildSystemTests.swift b/Tests/SourceKitTests/BuildSystemTests.swift index d23f181d..23209139 100644 --- a/Tests/SourceKitTests/BuildSystemTests.swift +++ b/Tests/SourceKitTests/BuildSystemTests.swift @@ -40,7 +40,7 @@ final class TestBuildSystem: BuildSystem { return buildSettingsByFile[uri] } - func registerForChangeNotifications(for uri: DocumentURI) { + func registerForChangeNotifications(for uri: DocumentURI, language: Language) { watchedFiles.insert(uri) }