Skip to content

Commit e687fe4

Browse files
authored
Merge pull request #1450 from ahoppen/thread-safe-box-incremental-parse-tests
Use a `ThreadSafeBox` for the `reusedNodes` variable in `testIncrementalParse`
2 parents 76a0db7 + ff7c706 commit e687fe4

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

Tests/SourceKitLSPTests/LocalSwiftTests.swift

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import LanguageServerProtocol
1616
import SKCore
1717
import SKTestSupport
1818
import SourceKitLSP
19+
import SwiftExtensions
1920
import SwiftParser
2021
import SwiftSyntax
2122
import XCTest
@@ -1352,14 +1353,12 @@ final class LocalSwiftTests: XCTestCase {
13521353
let uri = DocumentURI(url)
13531354

13541355
let reusedNodeCallback = self.expectation(description: "reused node callback called")
1355-
// nonisolated(unsafe) is fine because the variable will only be read after all writes from reusedNodeCallback are
1356-
// done.
1357-
nonisolated(unsafe) var reusedNodes: [Syntax] = []
1356+
let reusedNodes = ThreadSafeBox<[Syntax]>(initialValue: [])
13581357
let swiftLanguageService =
13591358
await testClient.server._languageService(for: uri, .swift, in: testClient.server.workspaceForDocument(uri: uri)!)
13601359
as! SwiftLanguageService
13611360
await swiftLanguageService.setReusedNodeCallback {
1362-
reusedNodes.append($0)
1361+
reusedNodes.value.append($0)
13631362
reusedNodeCallback.fulfill()
13641363
}
13651364

@@ -1386,9 +1385,8 @@ final class LocalSwiftTests: XCTestCase {
13861385
)
13871386
try await fulfillmentOfOrThrow([reusedNodeCallback])
13881387

1389-
XCTAssertEqual(reusedNodes.count, 1)
1390-
1391-
let firstNode = try XCTUnwrap(reusedNodes.first)
1388+
XCTAssertEqual(reusedNodes.value.count, 1)
1389+
let firstNode = try XCTUnwrap(reusedNodes.value.first)
13921390
XCTAssertEqual(
13931391
firstNode.description,
13941392
"""

0 commit comments

Comments
 (0)