From da3089ba111f7aa244057991e27447b13cc8a9f0 Mon Sep 17 00:00:00 2001 From: MO Date: Sat, 22 Mar 2025 22:05:18 +0800 Subject: [PATCH 1/2] Fix getScriptSnapshot for file with empty content --- packages/typescript-vfs/src/index.ts | 2 +- packages/typescript-vfs/test/index.test.ts | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/typescript-vfs/src/index.ts b/packages/typescript-vfs/src/index.ts index be88ea840ac8..8b3e6c16f481 100755 --- a/packages/typescript-vfs/src/index.ts +++ b/packages/typescript-vfs/src/index.ts @@ -671,7 +671,7 @@ export function createVirtualLanguageServiceHost( getScriptFileNames: () => fileNames.slice(), getScriptSnapshot: fileName => { const contents = sys.readFile(fileName) - if (contents && typeof contents === "string") { + if (typeof contents === "string") { return ts.ScriptSnapshot.fromString(contents) } return diff --git a/packages/typescript-vfs/test/index.test.ts b/packages/typescript-vfs/test/index.test.ts index 8e2022af543b..35ae1d85abf2 100644 --- a/packages/typescript-vfs/test/index.test.ts +++ b/packages/typescript-vfs/test/index.test.ts @@ -245,3 +245,16 @@ it("moduleDetection options", async () => { program.emit() expect(fsMap.get("index.js")).toEqual(`define(["require", "exports"], function (require, exports) {\n "use strict";\n Object.defineProperty(exports, "__esModule", { value: true });\n var foo = 'foo';\n});\n`) }) + +it("update file content to empty string", () => { + const options: ts.CompilerOptions = { + target: ts.ScriptTarget.ES2020, + } + const fsMap = createDefaultMapFromNodeModules(options, ts) + fsMap.set("index.ts", "console.logx('')") + const system = createSystem(fsMap) + const env = createVirtualTypeScriptEnvironment(system, ["index.ts"], ts, options) + env.updateFile("index.ts", "") + const diagnostics = env.languageService.getSemanticDiagnostics("index.ts") + expect(diagnostics.length).toBe(0) +}) From cf5a43c7528cfbb4089bd283e1e4534fb972b137 Mon Sep 17 00:00:00 2001 From: MO Date: Sat, 22 Mar 2025 22:20:08 +0800 Subject: [PATCH 2/2] Add changeset --- .changeset/spicy-swans-work.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/spicy-swans-work.md diff --git a/.changeset/spicy-swans-work.md b/.changeset/spicy-swans-work.md new file mode 100644 index 000000000000..cdbed796b106 --- /dev/null +++ b/.changeset/spicy-swans-work.md @@ -0,0 +1,5 @@ +--- +"@typescript/vfs": patch +--- + +Fix getScriptSnapshot for file with empty content