diff --git a/vue-language-tools/vue-language-core/src/generators/script.ts b/vue-language-tools/vue-language-core/src/generators/script.ts index 5d443e99a..42bdf3d0f 100644 --- a/vue-language-tools/vue-language-core/src/generators/script.ts +++ b/vue-language-tools/vue-language-core/src/generators/script.ts @@ -386,7 +386,11 @@ export function generate( codeGen.push(`};\n`); codeGen.push(`return await __VLS_setup();\n`); - codeGen.push(`})();`); + codeGen.push(`})()`); + if (sfc.script && scriptRanges?.exportDefault?.args) { + addVirtualCode('script', scriptRanges.exportDefault.expression.end, scriptRanges.exportDefault.end); + } + codeGen.push(`;`); // fix https://github.com/johnsoncodehk/volar/issues/1127 codeGen.push([ '', diff --git a/vue-language-tools/vue-language-core/src/parsers/scriptRanges.ts b/vue-language-tools/vue-language-core/src/parsers/scriptRanges.ts index 0f49f78fd..b2fbf6f99 100644 --- a/vue-language-tools/vue-language-core/src/parsers/scriptRanges.ts +++ b/vue-language-tools/vue-language-core/src/parsers/scriptRanges.ts @@ -17,8 +17,15 @@ export function parseScriptRanges(ts: typeof import('typescript/lib/tsserverlibr const bindings = hasScriptSetup ? parseBindingRanges(ts, ast, false) : []; - ast.forEachChild(node => { - if (ts.isExportAssignment(node)) { + ast.forEachChild(raw => { + + if (ts.isExportAssignment(raw)) { + + let node: ts.AsExpression | ts.ExportAssignment = raw; + if (ts.isAsExpression(node.expression)) { // fix https://github.com/johnsoncodehk/volar/issues/1882 + node = node.expression; + } + let obj: ts.ObjectLiteralExpression | undefined; if (ts.isObjectLiteralExpression(node.expression)) { obj = node.expression;