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,