@@ -544,12 +544,7 @@ func (f *FourslashTest) VerifyCompletions(t *testing.T, markerInput MarkerInput,
544
544
}
545
545
546
546
func (f * FourslashTest ) verifyCompletionsWorker (t * testing.T , expected * CompletionsExpectedList ) {
547
- var prefix string
548
- if f .lastKnownMarkerName != nil {
549
- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
550
- } else {
551
- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
552
- }
547
+ prefix := f .getCurrentPositionPrefix ()
553
548
params := & lsproto.CompletionParams {
554
549
TextDocument : lsproto.TextDocumentIdentifier {
555
550
Uri : ls .FileNameToDocumentURI (f .activeFilename ),
@@ -564,12 +559,11 @@ func (f *FourslashTest) verifyCompletionsWorker(t *testing.T, expected *Completi
564
559
if ! resultOk {
565
560
t .Fatalf (prefix + "Unexpected response type for completion request: %T" , resMsg .AsResponse ().Result )
566
561
}
567
- f .verifyCompletionsResult (t , f . currentCaretPosition , result .List , expected , prefix )
562
+ f .verifyCompletionsResult (t , result .List , expected , prefix )
568
563
}
569
564
570
565
func (f * FourslashTest ) verifyCompletionsResult (
571
566
t * testing.T ,
572
- position lsproto.Position ,
573
567
actual * lsproto.CompletionList ,
574
568
expected * CompletionsExpectedList ,
575
569
prefix string ,
@@ -932,17 +926,11 @@ func (f *FourslashTest) VerifyBaselineHover(t *testing.T) {
932
926
}
933
927
934
928
resMsg , result , resultOk := sendRequest (t , f , lsproto .TextDocumentHoverInfo , params )
935
- var prefix string
936
- if f .lastKnownMarkerName != nil {
937
- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
938
- } else {
939
- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
940
- }
941
929
if resMsg == nil {
942
- t .Fatalf (prefix + "Nil response received for quick info request" , f .lastKnownMarkerName )
930
+ t .Fatalf (f . getCurrentPositionPrefix () + "Nil response received for quick info request" , f .lastKnownMarkerName )
943
931
}
944
932
if ! resultOk {
945
- t .Fatalf (prefix + "Unexpected response type for quick info request: %T" , resMsg .AsResponse ().Result )
933
+ t .Fatalf (f . getCurrentPositionPrefix () + "Unexpected response type for quick info request: %T" , resMsg .AsResponse ().Result )
946
934
}
947
935
948
936
return markerAndItem [* lsproto.Hover ]{Marker : marker , Item : result .Hover }, true
@@ -1025,17 +1013,11 @@ func (f *FourslashTest) VerifyBaselineSignatureHelp(t *testing.T) {
1025
1013
}
1026
1014
1027
1015
resMsg , result , resultOk := sendRequest (t , f , lsproto .TextDocumentSignatureHelpInfo , params )
1028
- var prefix string
1029
- if f .lastKnownMarkerName != nil {
1030
- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
1031
- } else {
1032
- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
1033
- }
1034
1016
if resMsg == nil {
1035
- t .Fatalf (prefix + "Nil response received for signature help request" , f .lastKnownMarkerName )
1017
+ t .Fatalf (f . getCurrentPositionPrefix () + "Nil response received for signature help request" , f .lastKnownMarkerName )
1036
1018
}
1037
1019
if ! resultOk {
1038
- t .Fatalf (prefix + "Unexpected response type for signature help request: %T" , resMsg .AsResponse ().Result )
1020
+ t .Fatalf (f . getCurrentPositionPrefix () + "Unexpected response type for signature help request: %T" , resMsg .AsResponse ().Result )
1039
1021
}
1040
1022
1041
1023
return markerAndItem [* lsproto.SignatureHelp ]{Marker : marker , Item : result .SignatureHelp }, true
@@ -1319,8 +1301,7 @@ func (f *FourslashTest) getScriptInfo(fileName string) *scriptInfo {
1319
1301
func (f * FourslashTest ) VerifyQuickInfoAt (t * testing.T , marker string , expectedText string , expectedDocumentation string ) {
1320
1302
f .GoToMarker (t , marker )
1321
1303
hover := f .getQuickInfoAtCurrentPosition (t )
1322
-
1323
- f .verifyHoverContent (t , hover .Contents , expectedText , expectedDocumentation , fmt .Sprintf ("At marker '%s': " , marker ))
1304
+ f .verifyHoverContent (t , hover .Contents , expectedText , expectedDocumentation , f .getCurrentPositionPrefix ())
1324
1305
}
1325
1306
1326
1307
func (f * FourslashTest ) getQuickInfoAtCurrentPosition (t * testing.T ) * lsproto.Hover {
@@ -1392,11 +1373,77 @@ func (f *FourslashTest) quickInfoIsEmpty(t *testing.T) (bool, *lsproto.Hover) {
1392
1373
1393
1374
func (f * FourslashTest ) VerifyQuickInfoIs (t * testing.T , expectedText string , expectedDocumentation string ) {
1394
1375
hover := f .getQuickInfoAtCurrentPosition (t )
1395
- var prefix string
1376
+ f .verifyHoverContent (t , hover .Contents , expectedText , expectedDocumentation , f .getCurrentPositionPrefix ())
1377
+ }
1378
+
1379
+ type SignatureHelpCase struct {
1380
+ Context * lsproto.SignatureHelpContext
1381
+ MarkerInput MarkerInput
1382
+ Expected * lsproto.SignatureHelp
1383
+ }
1384
+
1385
+ func (f * FourslashTest ) VerifySignatureHelp (t * testing.T , signatureHelpCases ... * SignatureHelpCase ) {
1386
+ for _ , option := range signatureHelpCases {
1387
+ switch marker := option .MarkerInput .(type ) {
1388
+ case string :
1389
+ f .GoToMarker (t , marker )
1390
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1391
+ case * Marker :
1392
+ f .goToMarker (t , marker )
1393
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1394
+ case []string :
1395
+ for _ , markerName := range marker {
1396
+ f .GoToMarker (t , markerName )
1397
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1398
+ }
1399
+ case []* Marker :
1400
+ for _ , marker := range marker {
1401
+ f .goToMarker (t , marker )
1402
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1403
+ }
1404
+ case nil :
1405
+ f .verifySignatureHelp (t , option .Context , option .Expected )
1406
+ default :
1407
+ t .Fatalf ("Invalid marker input type: %T. Expected string, *Marker, []string, or []*Marker." , option .MarkerInput )
1408
+ }
1409
+ }
1410
+ }
1411
+
1412
+ func (f * FourslashTest ) verifySignatureHelp (
1413
+ t * testing.T ,
1414
+ context * lsproto.SignatureHelpContext ,
1415
+ expected * lsproto.SignatureHelp ,
1416
+ ) {
1417
+ prefix := f .getCurrentPositionPrefix ()
1418
+ params := & lsproto.SignatureHelpParams {
1419
+ TextDocument : lsproto.TextDocumentIdentifier {
1420
+ Uri : ls .FileNameToDocumentURI (f .activeFilename ),
1421
+ },
1422
+ Position : f .currentCaretPosition ,
1423
+ Context : context ,
1424
+ }
1425
+ resMsg , result , resultOk := sendRequest (t , f , lsproto .TextDocumentSignatureHelpInfo , params )
1426
+ if resMsg == nil {
1427
+ t .Fatalf (prefix + "Nil response received for signature help request" , f .lastKnownMarkerName )
1428
+ }
1429
+ if ! resultOk {
1430
+ t .Fatalf (prefix + "Unexpected response type for signature help request: %T" , resMsg .AsResponse ().Result )
1431
+ }
1432
+ f .verifySignatureHelpResult (t , result .SignatureHelp , expected , prefix )
1433
+ }
1434
+
1435
+ func (f * FourslashTest ) verifySignatureHelpResult (
1436
+ t * testing.T ,
1437
+ actual * lsproto.SignatureHelp ,
1438
+ expected * lsproto.SignatureHelp ,
1439
+ prefix string ,
1440
+ ) {
1441
+ assertDeepEqual (t , actual , expected , prefix + " SignatureHelp mismatch" )
1442
+ }
1443
+
1444
+ func (f * FourslashTest ) getCurrentPositionPrefix () string {
1396
1445
if f .lastKnownMarkerName != nil {
1397
- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
1398
- } else {
1399
- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
1446
+ return fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
1400
1447
}
1401
- f . verifyHoverContent ( t , hover . Contents , expectedText , expectedDocumentation , prefix )
1448
+ return fmt . Sprintf ( "At position (Ln %d, Col %d): " , f . currentCaretPosition . Line , f . currentCaretPosition . Character )
1402
1449
}
0 commit comments