Skip to content

Commit 7f4e10e

Browse files
committed
Asyncify MainFilesDelegate
1 parent eb597fd commit 7f4e10e

File tree

4 files changed

+11
-16
lines changed

4 files changed

+11
-16
lines changed

Sources/SKCore/BuildSystemManager.swift

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -295,15 +295,8 @@ extension BuildSystemManager: BuildSystemDelegate {
295295
}
296296

297297
extension BuildSystemManager: MainFilesDelegate {
298-
// FIXME: (async) Make this method isolated once `MainFilesDelegate` has ben asyncified
299-
public nonisolated func mainFilesChanged() {
300-
Task {
301-
await mainFilesChangedImpl()
302-
}
303-
}
304-
305298
// FIXME: Consider debouncing/limiting this, seems to trigger often during a build.
306-
public func mainFilesChangedImpl() async {
299+
public func mainFilesChanged() async {
307300
let origWatched = self.watchedFiles
308301
self.watchedFiles = [:]
309302
var buildSettingsChanges = Set<DocumentURI>()

Sources/SKCore/MainFilesProvider.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ public protocol MainFilesProvider: AnyObject {
3030
public protocol MainFilesDelegate: AnyObject {
3131

3232
/// The mapping from files to main files (may have) changed.
33-
func mainFilesChanged()
33+
func mainFilesChanged() async
3434
}

Sources/SourceKitLSP/SourceKitIndexDelegate.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ public final class SourceKitIndexDelegate: IndexDelegate {
5656
/// *Must be called on queue*.
5757
func _indexChanged() {
5858
for delegate in mainFilesDelegates {
59-
delegate.mainFilesChanged()
59+
Task {
60+
await delegate.mainFilesChanged()
61+
}
6062
}
6163
}
6264

Tests/SKCoreTests/BuildSystemManagerTests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ final class BuildSystemManagerTests: XCTestCase {
6666
await assertEqual(bsm._cachedMainFile(for: c), c)
6767
await assertEqual(bsm._cachedMainFile(for: d), d)
6868

69-
await bsm.mainFilesChangedImpl()
69+
await bsm.mainFilesChanged()
7070

7171
await assertEqual(bsm._cachedMainFile(for: a), a)
7272
await assertEqual(bsm._cachedMainFile(for: b), bMain) // never changes to a
@@ -80,7 +80,7 @@ final class BuildSystemManagerTests: XCTestCase {
8080
await assertEqual(bsm._cachedMainFile(for: d), d)
8181

8282
await bsm.unregisterForChangeNotifications(for: b)
83-
await bsm.mainFilesChangedImpl()
83+
await bsm.mainFilesChanged()
8484
await bsm.unregisterForChangeNotifications(for: c)
8585
await bsm.unregisterForChangeNotifications(for: d)
8686
await assertEqual(bsm._cachedMainFile(for: a), nil)
@@ -261,28 +261,28 @@ final class BuildSystemManagerTests: XCTestCase {
261261

262262
let changed = expectation(description: "changed settings to cpp2")
263263
await del.setExpected([(h, .c, bs.map[cpp2]!, changed, #file, #line)])
264-
await bsm.mainFilesChangedImpl()
264+
await bsm.mainFilesChanged()
265265
try await fulfillmentOfOrThrow([changed])
266266

267267
let changed2 = expectation(description: "still cpp2, no update")
268268
changed2.isInverted = true
269269
await del.setExpected([(h, .c, nil, changed2, #file, #line)])
270-
await bsm.mainFilesChangedImpl()
270+
await bsm.mainFilesChanged()
271271
try await fulfillmentOfOrThrow([changed2], timeout: 1)
272272

273273
mainFiles.mainFiles[h] = Set([cpp1, cpp2])
274274

275275
let changed3 = expectation(description: "added main file, no update")
276276
changed3.isInverted = true
277277
await del.setExpected([(h, .c, nil, changed3, #file, #line)])
278-
await bsm.mainFilesChangedImpl()
278+
await bsm.mainFilesChanged()
279279
try await fulfillmentOfOrThrow([changed3], timeout: 1)
280280

281281
mainFiles.mainFiles[h] = Set([])
282282

283283
let changed4 = expectation(description: "changed settings to []")
284284
await del.setExpected([(h, .c, nil, changed4, #file, #line)])
285-
await bsm.mainFilesChangedImpl()
285+
await bsm.mainFilesChanged()
286286
try await fulfillmentOfOrThrow([changed4])
287287
}
288288

0 commit comments

Comments
 (0)