@@ -36,23 +36,21 @@ export class DynamicFileInfoHandler {
3636 }
3737
3838 // Given Razor document URIs, returns associated generated doc URIs
39- private async provideDynamicFileInfo ( request : ProvideDynamicFileParams ) : Promise < ProvideDynamicFileResponse > {
40- const uris = request . razorFiles ;
41- const virtualUris = new Array < DocumentUri | null > ( ) ;
39+ private async provideDynamicFileInfo (
40+ request : ProvideDynamicFileParams
41+ ) : Promise < ProvideDynamicFileResponse | null > {
42+ let virtualUri : DocumentUri | null = null ;
4243 try {
43- for ( const razorDocumentPath of uris ) {
44- const vscodeUri = vscode . Uri . file ( razorDocumentPath ) ;
45- const razorDocument = await this . documentManager . getDocument ( vscodeUri ) ;
46- if ( razorDocument === undefined ) {
47- virtualUris . push ( null ) ;
48- this . logger . logWarning (
49- `Could not find Razor document ${ razorDocumentPath } ; adding null as a placeholder in URI array.`
50- ) ;
51- } else {
52- // Retrieve generated doc URIs for each Razor URI we are given
53- const virtualCsharpUri = UriConverter . serialize ( razorDocument . csharpDocument . uri ) ;
54- virtualUris . push ( virtualCsharpUri ) ;
55- }
44+ const vscodeUri = vscode . Uri . parse ( request . razorDocument . uri , true ) ;
45+ const razorDocument = await this . documentManager . getDocument ( vscodeUri ) ;
46+ if ( razorDocument === undefined ) {
47+ this . logger . logWarning (
48+ `Could not find Razor document ${ vscodeUri . fsPath } ; adding null as a placeholder in URI array.`
49+ ) ;
50+ } else {
51+ // Retrieve generated doc URIs for each Razor URI we are given
52+ const virtualCsharpUri = UriConverter . serialize ( razorDocument . csharpDocument . uri ) ;
53+ virtualUri = virtualCsharpUri ;
5654 }
5755
5856 this . documentManager . roslynActivated = true ;
@@ -64,17 +62,18 @@ export class DynamicFileInfoHandler {
6462 this . logger . logWarning ( `${ DynamicFileInfoHandler . provideDynamicFileInfoCommand } failed with ${ error } ` ) ;
6563 }
6664
67- return new ProvideDynamicFileResponse ( virtualUris ) ;
65+ if ( virtualUri ) {
66+ return new ProvideDynamicFileResponse ( { uri : virtualUri } ) ;
67+ }
68+
69+ return null ;
6870 }
6971
7072 private async removeDynamicFileInfo ( request : RemoveDynamicFileParams ) {
7173 try {
72- const uris = request . razorFiles ;
73- for ( const razorDocumentPath of uris ) {
74- const vscodeUri = vscode . Uri . file ( razorDocumentPath ) ;
75- if ( this . documentManager . isRazorDocumentOpenInCSharpWorkspace ( vscodeUri ) ) {
76- this . documentManager . didCloseRazorCSharpDocument ( vscodeUri ) ;
77- }
74+ const vscodeUri = UriConverter . deserialize ( request . csharpDocument . uri ) ;
75+ if ( this . documentManager . isRazorDocumentOpenInCSharpWorkspace ( vscodeUri ) ) {
76+ this . documentManager . didCloseRazorCSharpDocument ( vscodeUri ) ;
7877 }
7978 } catch ( error ) {
8079 this . logger . logWarning ( `${ DynamicFileInfoHandler . removeDynamicFileInfoCommand } failed with ${ error } ` ) ;
0 commit comments