@@ -188,6 +188,63 @@ final class SwiftSignatureHelpTests: XCTestCase {
188
188
)
189
189
}
190
190
191
+ func testSignatureHelpEnumCase( ) async throws {
192
+ let testClient = try await TestSourceKitLSPClient ( )
193
+ let uri = DocumentURI ( for: . swift)
194
+
195
+ let positions = testClient. openDocument (
196
+ """
197
+ enum Label {
198
+ /// The label as an offset within the signature label
199
+ /// - Parameters:
200
+ /// - start: The start offset
201
+ /// - end: The end offset
202
+ case offset(start: Int, end: Int)
203
+ }
204
+
205
+ func main() {
206
+ let label = Label.offset(start: 11️⃣)
207
+ }
208
+ """ ,
209
+ uri: uri
210
+ )
211
+
212
+ let result = try await testClient. send (
213
+ SignatureHelpRequest (
214
+ textDocument: TextDocumentIdentifier ( uri) ,
215
+ position: positions [ " 1️⃣ " ]
216
+ )
217
+ )
218
+
219
+ let signatureHelp = try XCTUnwrap ( result)
220
+ let signature = try XCTUnwrap ( signatureHelp. signatures. only)
221
+
222
+ XCTAssertEqual ( signatureHelp. activeSignature, 0 )
223
+ XCTAssertEqual ( signatureHelp. activeParameter, 0 )
224
+ XCTAssertEqual ( signature. label, " offset(start: Int, end: Int) -> Label " )
225
+ XCTAssertEqual (
226
+ signature. documentation,
227
+ . markupContent(
228
+ MarkupContent (
229
+ kind: . markdown,
230
+ value: """
231
+ The label as an offset within the signature label
232
+ - Parameters:
233
+ - start: The start offset
234
+ - end: The end offset
235
+ """
236
+ )
237
+ )
238
+ )
239
+ XCTAssertEqual (
240
+ signature. parameters,
241
+ [
242
+ ParameterInformation ( label: . offsets( start: 7 , end: 17 ) ) ,
243
+ ParameterInformation ( label: . offsets( start: 19 , end: 27 ) ) ,
244
+ ]
245
+ )
246
+ }
247
+
191
248
func testSignatureHelpWithNoParameters( ) async throws {
192
249
let testClient = try await TestSourceKitLSPClient ( )
193
250
let uri = DocumentURI ( for: . swift)
@@ -281,14 +338,15 @@ final class SwiftSignatureHelpTests: XCTestCase {
281
338
let signature = try XCTUnwrap ( signatureHelp. signatures. only)
282
339
283
340
XCTAssertEqual ( signature. label, " add(first: Double!, second: Float, third: Int) -> Double " , line: line)
284
- XCTAssertNil ( signature. documentation)
341
+ XCTAssertNil ( signature. documentation, line : line )
285
342
XCTAssertEqual (
286
343
signature. parameters,
287
344
[
288
345
ParameterInformation ( label: . offsets( start: 4 , end: 18 ) ) ,
289
346
ParameterInformation ( label: . offsets( start: 20 , end: 33 ) ) ,
290
347
ParameterInformation ( label: . offsets( start: 35 , end: 45 ) ) ,
291
- ]
348
+ ] ,
349
+ line: line
292
350
)
293
351
294
352
return signature
@@ -346,9 +404,13 @@ final class SwiftSignatureHelpTests: XCTestCase {
346
404
let signatureHelp = try XCTUnwrap ( result)
347
405
XCTAssertEqual ( signatureHelp. activeSignature, 0 )
348
406
XCTAssertEqual ( signatureHelp. activeParameter, 0 )
349
- XCTAssertEqual ( signatureHelp. signatures. count, 2 )
350
407
351
- let firstSignature = try XCTUnwrap ( signatureHelp. signatures [ 0 ] )
408
+ guard signatureHelp. signatures. count == 2 else {
409
+ XCTFail ( " expected 2 signatures, got \( signatureHelp. signatures) " )
410
+ return
411
+ }
412
+
413
+ let firstSignature = signatureHelp. signatures [ 0 ]
352
414
XCTAssertEqual ( firstSignature. label, " add(_ x: Int, to: Int) -> Int " )
353
415
XCTAssertEqual ( firstSignature. activeParameter, 0 )
354
416
XCTAssertNil ( firstSignature. documentation)
@@ -360,7 +422,7 @@ final class SwiftSignatureHelpTests: XCTestCase {
360
422
]
361
423
)
362
424
363
- let secondSignature = try XCTUnwrap ( signatureHelp. signatures [ 1 ] )
425
+ let secondSignature = signatureHelp. signatures [ 1 ]
364
426
XCTAssertEqual ( secondSignature. label, " add(oneTo: inout Int) " )
365
427
XCTAssertEqual ( secondSignature. activeParameter, 0 )
366
428
XCTAssertEqual (
@@ -418,16 +480,16 @@ final class SwiftSignatureHelpTests: XCTestCase {
418
480
func testSignatureHelpSwiftPMProject( ) async throws {
419
481
let project = try await SwiftPMTestProject (
420
482
files: [
421
- " utils.swift " : """
483
+ " utils.swift " : # """
422
484
/// A utility function that combines values
423
485
/// - Parameters:
424
486
/// - first: The first value
425
487
/// - second: The second value
426
488
/// - Returns: The combined result
427
489
func combine(first: String, second: Int) -> String {
428
- return " \\ (first)- \ \(second) "
490
+ return "\(first)-\(second)"
429
491
}
430
- """ ,
492
+ """# ,
431
493
" main.swift " : """
432
494
func test() {
433
495
combine(1️⃣)
0 commit comments