diff --git a/packages/vue-language-core/src/parsers/scriptSetupRanges.ts b/packages/vue-language-core/src/parsers/scriptSetupRanges.ts index 86b15e358..053422477 100644 --- a/packages/vue-language-core/src/parsers/scriptSetupRanges.ts +++ b/packages/vue-language-core/src/parsers/scriptSetupRanges.ts @@ -44,7 +44,14 @@ export function parseScriptSetupRanges( // fix https://github.com/vuejs/language-tools/issues/1223 && !ts.isImportEqualsDeclaration(node) ) { - importSectionEndOffset = node.getStart(ast, true); + const commentRagnes = ts.getLeadingCommentRanges(ast.getFullText(), node.getFullStart()); + if (commentRagnes?.length) { + const commentRange = commentRagnes.sort((a, b) => a.pos - b.pos)[0]; + importSectionEndOffset = commentRange.pos; + } + else { + importSectionEndOffset = node.getStart(ast); + } foundNonImportExportNode = true; } }); diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/import.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/import.vue new file mode 100644 index 000000000..72873e7d1 --- /dev/null +++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/import.vue @@ -0,0 +1,11 @@ + + + \ No newline at end of file diff --git a/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/main.vue b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/main.vue new file mode 100644 index 000000000..1b0431856 --- /dev/null +++ b/packages/vue-test-workspace/vue-tsc/non-strict-template/#3327/main.vue @@ -0,0 +1,4 @@ +