diff --git a/packages/vue-language-core/src/generators/template.ts b/packages/vue-language-core/src/generators/template.ts index 95053703a9..76cfe585fc 100644 --- a/packages/vue-language-core/src/generators/template.ts +++ b/packages/vue-language-core/src/generators/template.ts @@ -1508,7 +1508,9 @@ export function generate( ['', 'template', node.loc.end.offset, capabilitiesPresets.diagnosticOnly], ']', ['', 'template', node.loc.end.offset, capabilitiesPresets.diagnosticOnly], - '?.({\n', + '?.(', + ['', 'template', startTagOffset, capabilitiesPresets.diagnosticOnly], + '{\n', ); } else { @@ -1587,7 +1589,11 @@ export function generate( ); } } - codes.push(hasScriptSetupSlots ? `});\n` : `};\n`); + codes.push( + '}', + hasScriptSetupSlots ? ['', 'template', startTagOffset + node.tag.length, capabilitiesPresets.diagnosticOnly] : '', + hasScriptSetupSlots ? `);\n` : `;\n` + ); if (hasScriptSetupSlots) { return; diff --git a/packages/vue-test-workspace/vue-tsc/#2726/main.vue b/packages/vue-test-workspace/vue-tsc/#2726/main.vue index dd56d11c02..5117ec08be 100644 --- a/packages/vue-test-workspace/vue-tsc/#2726/main.vue +++ b/packages/vue-test-workspace/vue-tsc/#2726/main.vue @@ -8,11 +8,11 @@ const foo = ref('bar'); defineSlots<{ default: { foo: string; - buz: number; + buz?: number; }; }>();