@@ -526,12 +526,7 @@ func (f *FourslashTest) VerifyCompletions(t *testing.T, markerInput MarkerInput,
526
526
}
527
527
528
528
func (f * FourslashTest ) verifyCompletionsWorker (t * testing.T , expected * CompletionsExpectedList ) {
529
- var prefix string
530
- if f .lastKnownMarkerName != nil {
531
- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
532
- } else {
533
- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
534
- }
529
+ prefix := f .getCurrentPositionPrefix ()
535
530
params := & lsproto.CompletionParams {
536
531
TextDocument : lsproto.TextDocumentIdentifier {
537
532
Uri : ls .FileNameToDocumentURI (f .activeFilename ),
@@ -546,12 +541,11 @@ func (f *FourslashTest) verifyCompletionsWorker(t *testing.T, expected *Completi
546
541
if ! resultOk {
547
542
t .Fatalf (prefix + "Unexpected response type for completion request: %T" , resMsg .AsResponse ().Result )
548
543
}
549
- f .verifyCompletionsResult (t , f . currentCaretPosition , result .List , expected , prefix )
544
+ f .verifyCompletionsResult (t , result .List , expected , prefix )
550
545
}
551
546
552
547
func (f * FourslashTest ) verifyCompletionsResult (
553
548
t * testing.T ,
554
- position lsproto.Position ,
555
549
actual * lsproto.CompletionList ,
556
550
expected * CompletionsExpectedList ,
557
551
prefix string ,
@@ -914,17 +908,11 @@ func (f *FourslashTest) VerifyBaselineHover(t *testing.T) {
914
908
}
915
909
916
910
resMsg , result , resultOk := sendRequest (t , f , lsproto .TextDocumentHoverInfo , params )
917
- var prefix string
918
- if f .lastKnownMarkerName != nil {
919
- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
920
- } else {
921
- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
922
- }
923
911
if resMsg == nil {
924
- t .Fatalf (prefix + "Nil response received for quick info request" , f .lastKnownMarkerName )
912
+ t .Fatalf (f . getCurrentPositionPrefix () + "Nil response received for quick info request" , f .lastKnownMarkerName )
925
913
}
926
914
if ! resultOk {
927
- t .Fatalf (prefix + "Unexpected response type for quick info request: %T" , resMsg .AsResponse ().Result )
915
+ t .Fatalf (f . getCurrentPositionPrefix () + "Unexpected response type for quick info request: %T" , resMsg .AsResponse ().Result )
928
916
}
929
917
930
918
return markerAndItem [* lsproto.Hover ]{Marker : marker , Item : result .Hover }, true
@@ -1007,17 +995,11 @@ func (f *FourslashTest) VerifyBaselineSignatureHelp(t *testing.T) {
1007
995
}
1008
996
1009
997
resMsg , result , resultOk := sendRequest (t , f , lsproto .TextDocumentSignatureHelpInfo , params )
1010
- var prefix string
1011
- if f .lastKnownMarkerName != nil {
1012
- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
1013
- } else {
1014
- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
1015
- }
1016
998
if resMsg == nil {
1017
- t .Fatalf (prefix + "Nil response received for signature help request" , f .lastKnownMarkerName )
999
+ t .Fatalf (f . getCurrentPositionPrefix () + "Nil response received for signature help request" , f .lastKnownMarkerName )
1018
1000
}
1019
1001
if ! resultOk {
1020
- t .Fatalf (prefix + "Unexpected response type for signature help request: %T" , resMsg .AsResponse ().Result )
1002
+ t .Fatalf (f . getCurrentPositionPrefix () + "Unexpected response type for signature help request: %T" , resMsg .AsResponse ().Result )
1021
1003
}
1022
1004
1023
1005
return markerAndItem [* lsproto.SignatureHelp ]{Marker : marker , Item : result .SignatureHelp }, true
@@ -1301,8 +1283,7 @@ func (f *FourslashTest) getScriptInfo(fileName string) *scriptInfo {
1301
1283
func (f * FourslashTest ) VerifyQuickInfoAt (t * testing.T , marker string , expectedText string , expectedDocumentation string ) {
1302
1284
f .GoToMarker (t , marker )
1303
1285
hover := f .getQuickInfoAtCurrentPosition (t )
1304
-
1305
- f .verifyHoverContent (t , hover .Contents , expectedText , expectedDocumentation , fmt .Sprintf ("At marker '%s': " , marker ))
1286
+ f .verifyHoverContent (t , hover .Contents , expectedText , expectedDocumentation , f .getCurrentPositionPrefix ())
1306
1287
}
1307
1288
1308
1289
func (f * FourslashTest ) getQuickInfoAtCurrentPosition (t * testing.T ) * lsproto.Hover {
@@ -1374,11 +1355,77 @@ func (f *FourslashTest) quickInfoIsEmpty(t *testing.T) (bool, *lsproto.Hover) {
1374
1355
1375
1356
func (f * FourslashTest ) VerifyQuickInfoIs (t * testing.T , expectedText string , expectedDocumentation string ) {
1376
1357
hover := f .getQuickInfoAtCurrentPosition (t )
1377
- var prefix string
1358
+ f .verifyHoverContent (t , hover .Contents , expectedText , expectedDocumentation , f .getCurrentPositionPrefix ())
1359
+ }
1360
+
1361
+ type SignatureHelpCase struct {
1362
+ Context * lsproto.SignatureHelpContext
1363
+ MarkerInput MarkerInput
1364
+ Expected * lsproto.SignatureHelp
1365
+ }
1366
+
1367
+ func (f * FourslashTest ) VerifySignatureHelp (t * testing.T , signatureHelpCases ... * SignatureHelpCase ) {
1368
+ for _ , option := range signatureHelpCases {
1369
+ switch marker := option .MarkerInput .(type ) {
1370
+ case string :
1371
+ f .GoToMarker (t , marker )
1372
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1373
+ case * Marker :
1374
+ f .goToMarker (t , marker )
1375
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1376
+ case []string :
1377
+ for _ , markerName := range marker {
1378
+ f .GoToMarker (t , markerName )
1379
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1380
+ }
1381
+ case []* Marker :
1382
+ for _ , marker := range marker {
1383
+ f .goToMarker (t , marker )
1384
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1385
+ }
1386
+ case nil :
1387
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1388
+ default :
1389
+ t .Fatalf ("Invalid marker input type: %T. Expected string, *Marker, []string, or []*Marker." , option .MarkerInput )
1390
+ }
1391
+ }
1392
+ }
1393
+
1394
+ func (f * FourslashTest ) verifySignatureHelp (
1395
+ t * testing.T ,
1396
+ context * lsproto.SignatureHelpContext ,
1397
+ expected * lsproto.SignatureHelp ,
1398
+ ) {
1399
+ prefix := f .getCurrentPositionPrefix ()
1400
+ params := & lsproto.SignatureHelpParams {
1401
+ TextDocument : lsproto.TextDocumentIdentifier {
1402
+ Uri : ls .FileNameToDocumentURI (f .activeFilename ),
1403
+ },
1404
+ Position : f .currentCaretPosition ,
1405
+ Context : context ,
1406
+ }
1407
+ resMsg , result , resultOk := sendRequest (t , f , lsproto .TextDocumentSignatureHelpInfo , params )
1408
+ if resMsg == nil {
1409
+ t .Fatalf (prefix + "Nil response received for signature help request" , f .lastKnownMarkerName )
1410
+ }
1411
+ if ! resultOk {
1412
+ t .Fatalf (prefix + "Unexpected response type for signature help request: %T" , resMsg .AsResponse ().Result )
1413
+ }
1414
+ f .verifySignatureHelpResult (t , result .SignatureHelp , expected , prefix )
1415
+ }
1416
+
1417
+ func (f * FourslashTest ) verifySignatureHelpResult (
1418
+ t * testing.T ,
1419
+ actual * lsproto.SignatureHelp ,
1420
+ expected * lsproto.SignatureHelp ,
1421
+ prefix string ,
1422
+ ) {
1423
+ assertDeepEqual (t , actual , expected , prefix + " SignatureHelp mismatch" )
1424
+ }
1425
+
1426
+ func (f * FourslashTest ) getCurrentPositionPrefix () string {
1378
1427
if f .lastKnownMarkerName != nil {
1379
- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
1380
- } else {
1381
- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
1428
+ return fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
1382
1429
}
1383
- f . verifyHoverContent ( t , hover . Contents , expectedText , expectedDocumentation , prefix )
1430
+ return fmt . Sprintf ( "At position (Ln %d, Col %d): " , f . currentCaretPosition . Line , f . currentCaretPosition . Character )
1384
1431
}
0 commit comments