From a5d4aa9c030b63804727610e91d4d321e7f11fec Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Tue, 29 Apr 2025 14:24:13 +0800 Subject: [PATCH] fix(volar/jsx-directive): use getStart instead of pos for v-if and v-for --- .../jsx-directive/tests/__snapshots__/v-for.test.ts.snap | 4 +++- packages/jsx-directive/tests/fixtures/v-for/index.vue | 4 +++- packages/volar/src/jsx-directive/v-for.ts | 8 +++++++- packages/volar/src/jsx-directive/v-if.ts | 6 +++--- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/jsx-directive/tests/__snapshots__/v-for.test.ts.snap b/packages/jsx-directive/tests/__snapshots__/v-for.test.ts.snap index 7736098a2..14c812d8b 100644 --- a/packages/jsx-directive/tests/__snapshots__/v-for.test.ts.snap +++ b/packages/jsx-directive/tests/__snapshots__/v-for.test.ts.snap @@ -11,7 +11,9 @@ const set = new Set(['1', '2', '3']) const object = { id: 1, name: 'admin' } let selected = 0 -const Comp = <>{__MACROS_renderList(4, (i) =>
{i}
)} +const Comp = () => { + return <>{__MACROS_renderList(4, (i) =>
{i}
)} +} defineRender(() => ( <> diff --git a/packages/jsx-directive/tests/fixtures/v-for/index.vue b/packages/jsx-directive/tests/fixtures/v-for/index.vue index ff69d51c7..4ce92d3e1 100644 --- a/packages/jsx-directive/tests/fixtures/v-for/index.vue +++ b/packages/jsx-directive/tests/fixtures/v-for/index.vue @@ -7,7 +7,9 @@ const set = new Set(['1', '2', '3']) const object = { id: 1, name: 'admin' } let selected = 0 -const Comp =
{i}
+const Comp = () => { + return
{i}
+} defineRender(() => ( <> diff --git a/packages/volar/src/jsx-directive/v-for.ts b/packages/volar/src/jsx-directive/v-for.ts index 671aeba2e..bf08e325f 100644 --- a/packages/volar/src/jsx-directive/v-for.ts +++ b/packages/volar/src/jsx-directive/v-for.ts @@ -99,7 +99,13 @@ export function transformVFor( result.unshift('{') } - replaceSourceRange(codes, source, node.pos, node.pos, ...result) + replaceSourceRange( + codes, + source, + getStart(node, options), + getStart(node, options), + ...result, + ) replaceSourceRange( codes, diff --git a/packages/volar/src/jsx-directive/v-if.ts b/packages/volar/src/jsx-directive/v-if.ts index 429d30747..ed9215085 100644 --- a/packages/volar/src/jsx-directive/v-if.ts +++ b/packages/volar/src/jsx-directive/v-if.ts @@ -23,9 +23,9 @@ export function transformVIf( replaceSourceRange( codes, source, - node.pos, - node.pos, - `${hasScope ? '{' : ' '}(`, + getStart(node, options), + getStart(node, options), + `${hasScope ? '{' : ''}(`, [ getText(attribute.initializer.expression, options), source,