diff --git a/packages/language-service/src/language-plugin.ts b/packages/language-service/src/language-plugin.ts
index c8bd09f..5ed4856 100644
--- a/packages/language-service/src/language-plugin.ts
+++ b/packages/language-service/src/language-plugin.ts
@@ -191,19 +191,17 @@ function* getTempblotEmbeddedCodes(
});
});
- if (tsMappings.length > 0) {
- yield {
- id: "combined_context",
- languageId: "typescript",
- snapshot: {
- getText: (start, end) => combinedText.substring(start, end),
- getLength: () => combinedText.length,
- getChangeRange: () => undefined,
- },
- mappings: tsMappings,
- embeddedCodes: [],
- };
- }
+ yield {
+ id: "combined_context",
+ languageId: "typescript",
+ snapshot: {
+ getText: (start, end) => combinedText.substring(start, end),
+ getLength: () => combinedText.length,
+ getChangeRange: () => undefined,
+ },
+ mappings: tsMappings,
+ embeddedCodes: [],
+ };
if (!output) {
return;
diff --git a/packages/language-service/tests/language-plugin.spec.ts b/packages/language-service/tests/language-plugin.spec.ts
index fe9a8b7..1730ace 100644
--- a/packages/language-service/tests/language-plugin.spec.ts
+++ b/packages/language-service/tests/language-plugin.spec.ts
@@ -52,6 +52,28 @@ test("creates output embedded code for output-only files", () => {
.toContain('{"value": null}');
});
+test("creates empty TypeScript embedded code for output-only files without interpolations", () => {
+ const source = ``;
+
+ const virtualCode = createVirtualCode(source);
+ const combinedContext = virtualCode.embeddedCodes.find(
+ (code) => code.id === "combined_context",
+ );
+ const outputJson = virtualCode.embeddedCodes.find(
+ (code) => code.id === "output_json",
+ );
+
+ expect(combinedContext?.snapshot.getText(0, combinedContext.snapshot.getLength()))
+ .toBe("export {}; // Make this file a module\n\n");
+ expect(combinedContext?.mappings).toEqual([]);
+ expect(outputJson?.snapshot.getText(0, outputJson.snapshot.getLength()))
+ .toContain('"test": "a"');
+});
+
test("does not report missing-block diagnostics for single-section files", () => {
const setupOnlyDiagnostics = getTempblotRootDiagnostics(
parseTempblotRoot(""),