@@ -628,9 +628,8 @@ export class DefaultClient implements Client {
628628 return ;
629629 }
630630 referencesRequestPending = true ;
631- this . client . languageClient . sendNotification ( FindAllReferencesNotification , params ) ;
632631 // Register a single-fire handler for the reply.
633- this . client . references . setResultsCallback ( ( result ) => {
632+ let resultCallback : refs . ReferencesResultCallback = ( result : refs . ReferencesResult ) => {
634633 referencesRequestPending = false ;
635634 if ( referencesPendingCancellations . length > 0 ) {
636635 while ( referencesPendingCancellations . length > 1 ) {
@@ -643,15 +642,22 @@ export class DefaultClient implements Client {
643642 pendingCancel . callback ( ) ;
644643 }
645644 let locations : vscode . Location [ ] = [ ] ;
646- result . referenceInfos . forEach ( referenceInfo => {
645+ result . referenceInfos . forEach ( ( referenceInfo : refs . ReferenceInfo ) => {
647646 if ( referenceInfo . type === refs . ReferenceType . Confirmed ) {
648647 let uri : vscode . Uri = vscode . Uri . file ( referenceInfo . file ) ;
649648 let range : vscode . Range = new vscode . Range ( referenceInfo . position . line , referenceInfo . position . character , referenceInfo . position . line , referenceInfo . position . character + result . text . length ) ;
650649 locations . push ( new vscode . Location ( uri , range ) ) ;
651650 }
652651 } ) ;
653652 resolve ( locations ) ;
654- } ) ;
653+ } ;
654+ if ( this . client . references . lastResults ) {
655+ resultCallback ( this . client . references . lastResults ) ;
656+ this . client . references . lastResults = null ;
657+ } else {
658+ this . client . languageClient . sendNotification ( FindAllReferencesNotification , params ) ;
659+ this . client . references . setResultsCallback ( resultCallback ) ;
660+ }
655661 } ) ;
656662 token . onCancellationRequested ( e => {
657663 if ( params === referencesParams ) {
@@ -710,7 +716,7 @@ export class DefaultClient implements Client {
710716 }
711717 referencesRequestPending = true ;
712718 this . client . languageClient . sendNotification ( RenameNotification , params ) ;
713- this . client . references . setResultsCallback ( ( referencesResult ) => {
719+ this . client . references . setResultsCallback ( ( referencesResult : refs . ReferencesResult ) => {
714720 referencesRequestPending = false ;
715721 -- renameRequestsPending ;
716722 let workspaceEdit : vscode . WorkspaceEdit = new vscode . WorkspaceEdit ( ) ;
0 commit comments