Fix bugs with close of markdown docs (#164942)

There are two bugs here:

- Something in the lsp is converting a value from `undefined` to `null`. To fix this, I've updated us just to check for falsy values instead
- The `hasInMemoryDoc` implementation was incorrect. It needs to verify that the value of `this.inMemoryDoc` is not null/undefined
This commit is contained in:
Matt Bierner
2022-10-28 17:08:21 -07:00
committed by GitHub
parent d65cc6a9f8
commit 7cb1b9d9f0

View File

@@ -65,7 +65,7 @@ class VsCodeDocument implements md.ITextDocument {
}
hasInMemoryDoc(): boolean {
return !this.inMemoryDoc;
return !!this.inMemoryDoc;
}
isDetached(): boolean {
@@ -176,7 +176,7 @@ export class VsCodeClientWorkspace implements md.IWorkspaceWithWatching {
// Check that if file has been deleted on disk.
// This can happen when directories are renamed / moved. VS Code's file system watcher does not
// notify us when this happens.
if (await this.statBypassingCache(uri) === undefined) {
if (!(await this.statBypassingCache(uri))) {
if (this._documentCache.get(uri) === doc && !doc.hasInMemoryDoc()) {
this.doDeleteDocument(uri);
return;
@@ -355,7 +355,8 @@ export class VsCodeClientWorkspace implements md.IWorkspaceWithWatching {
if (this.documents.get(uri)) {
return { isDirectory: false };
}
return this.connection.sendRequest(protocol.fs_stat, { uri });
const fsResult = await this.connection.sendRequest(protocol.fs_stat, { uri });
return fsResult ?? undefined; // Force convert null to undefined
}
async readDirectory(resource: URI): Promise<[string, md.FileStat][]> {