@@ -529,24 +529,35 @@ namespace FourSlash {
529529 this . verifyGoToDefinitionWorker ( endMarker instanceof Array ? endMarker : [ endMarker ] ) ;
530530 }
531531
532- public verifyGoToDefinition ( startsAndEnds : ( string | string [ ] ) [ ] ) {
533- if ( startsAndEnds . length % 2 ) {
534- throw new Error ( "verify.goToDefinition needs an even number of arguments." ) ;
532+ public verifyGoToDefinition ( arg0 : any , endMarkerNames ?: string | string [ ] ) {
533+ if ( endMarkerNames ) {
534+ this . verifyGoToDefinitionPlain ( arg0 , endMarkerNames ) ;
535535 }
536-
537- for ( let i = 0 ; i < startsAndEnds . length ; i += 2 ) {
538- const start = startsAndEnds [ i ] ;
539- const end = startsAndEnds [ i + 1 ] ;
540-
541- if ( start instanceof Array ) {
542- for ( const s of start ) {
543- this . verifyGoToDefinitionSingle ( s , end ) ;
536+ else if ( arg0 instanceof Array ) {
537+ const pairs : [ string | string [ ] , string | string [ ] ] [ ] = arg0 ;
538+ for ( const [ start , end ] of pairs ) {
539+ this . verifyGoToDefinitionPlain ( start , end ) ;
540+ }
541+ }
542+ else {
543+ const obj : { [ startMarkerName : string ] : string | string [ ] } = arg0 ;
544+ for ( const startMarkerName in obj ) {
545+ if ( ts . hasProperty ( obj , startMarkerName ) ) {
546+ this . verifyGoToDefinitionPlain ( startMarkerName , obj [ startMarkerName ] ) ;
544547 }
545548 }
546- else {
547- this . verifyGoToDefinitionSingle ( start , end ) ;
549+ }
550+ }
551+
552+ private verifyGoToDefinitionPlain ( startMarkerNames : string | string [ ] , endMarkerNames : string | string [ ] ) {
553+ if ( startMarkerNames instanceof Array ) {
554+ for ( const start of startMarkerNames ) {
555+ this . verifyGoToDefinitionSingle ( start , endMarkerNames ) ;
548556 }
549557 }
558+ else {
559+ this . verifyGoToDefinitionSingle ( startMarkerNames , endMarkerNames ) ;
560+ }
550561 }
551562
552563 public verifyGoToDefinitionForMarkers ( markerNames : string [ ] ) {
@@ -555,9 +566,9 @@ namespace FourSlash {
555566 }
556567 }
557568
558- private verifyGoToDefinitionSingle ( start : string , end : string | string [ ] ) {
559- this . goToMarker ( start ) ;
560- this . verifyGoToDefinitionWorker ( end instanceof Array ? end : [ end ] ) ;
569+ private verifyGoToDefinitionSingle ( startMarkerName : string , endMarkerNames : string | string [ ] ) {
570+ this . goToMarker ( startMarkerName ) ;
571+ this . verifyGoToDefinitionWorker ( endMarkerNames instanceof Array ? endMarkerNames : [ endMarkerNames ] ) ;
561572 }
562573
563574 private verifyGoToDefinitionWorker ( endMarkers : string [ ] ) {
@@ -2947,8 +2958,11 @@ namespace FourSlashInterface {
29472958 this . state . verifyGoToDefinitionIs ( endMarkers ) ;
29482959 }
29492960
2950- public goToDefinition ( ...startsAndEnds : ( string | string [ ] ) [ ] ) {
2951- this . state . verifyGoToDefinition ( startsAndEnds ) ;
2961+ public goToDefinition ( startMarkerName : string | string [ ] , endMarkerName : string | string [ ] ) : void ;
2962+ public goToDefinition ( startsAndEnds : [ string | string [ ] , string | string [ ] ] [ ] ) : void ;
2963+ public goToDefinition ( startsAndEnds : { [ startMarkerName : string ] : string | string [ ] } ) : void ;
2964+ public goToDefinition ( arg0 : any , endMarkerName ?: string | string [ ] ) {
2965+ this . state . verifyGoToDefinition ( arg0 , endMarkerName ) ;
29522966 }
29532967
29542968 public goToDefinitionForMarkers ( ...markerNames : string [ ] ) {
0 commit comments