From 2eb83600c5d6758a090d9a999eefc7f6020fbc93 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Thu, 16 Oct 2025 18:37:47 +0800 Subject: [PATCH 1/2] fix(compiler-vapor): handle boolean as constant node --- .../__tests__/__snapshots__/compile.spec.ts.snap | 4 ++-- .../__snapshots__/transformTemplateRef.spec.ts.snap | 2 +- .../__tests__/transforms/__snapshots__/vIf.spec.ts.snap | 9 ++++++--- .../transforms/__snapshots__/vSlot.spec.ts.snap | 2 +- packages/compiler-vapor/__tests__/transforms/vIf.spec.ts | 2 +- packages/compiler-vapor/src/transforms/vIf.ts | 4 +++- packages/compiler-vapor/src/utils.ts | 6 ++++++ 7 files changed, 20 insertions(+), 9 deletions(-) diff --git a/packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap b/packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap index 9f2183ce83e..95b63dcf277 100644 --- a/packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap +++ b/packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap @@ -42,7 +42,7 @@ export function render(_ctx) { const n2 = _createComponentWithFallback(_component_Bar) _withVaporDirectives(n2, [[_directive_hello, void 0, void 0, { world: true }]]) return n3 - }) + }, null, true) return n0 } }, true) @@ -298,7 +298,7 @@ export function render(_ctx) { const n1 = _createIf(() => (true), () => { const n3 = t0() return n3 - }) + }, null, true) _renderEffect(() => _setProp(n4, "disabled", _ctx.foo)) return n6 }" diff --git a/packages/compiler-vapor/__tests__/transforms/__snapshots__/transformTemplateRef.spec.ts.snap b/packages/compiler-vapor/__tests__/transforms/__snapshots__/transformTemplateRef.spec.ts.snap index 7184446fc09..f2ff9ef194b 100644 --- a/packages/compiler-vapor/__tests__/transforms/__snapshots__/transformTemplateRef.spec.ts.snap +++ b/packages/compiler-vapor/__tests__/transforms/__snapshots__/transformTemplateRef.spec.ts.snap @@ -58,7 +58,7 @@ export function render(_ctx) { const n2 = t0() _setTemplateRef(n2, "foo") return n2 - }) + }, null, true) return n0 }" `; diff --git a/packages/compiler-vapor/__tests__/transforms/__snapshots__/vIf.spec.ts.snap b/packages/compiler-vapor/__tests__/transforms/__snapshots__/vIf.spec.ts.snap index c41dc9226c5..1bf00dda87e 100644 --- a/packages/compiler-vapor/__tests__/transforms/__snapshots__/vIf.spec.ts.snap +++ b/packages/compiler-vapor/__tests__/transforms/__snapshots__/vIf.spec.ts.snap @@ -110,10 +110,13 @@ export function render(_ctx) { }, () => _createIf(() => (_ctx.orNot), () => { const n4 = t1() return n4 - }, () => { - const n7 = t2() + }, () => _createIf(() => (false), () => { + const n7 = t1() return n7 - })) + }, () => { + const n10 = t2() + return n10 + }, true))) return n0 }" `; diff --git a/packages/compiler-vapor/__tests__/transforms/__snapshots__/vSlot.spec.ts.snap b/packages/compiler-vapor/__tests__/transforms/__snapshots__/vSlot.spec.ts.snap index f296d7257d0..c2e2be321ab 100644 --- a/packages/compiler-vapor/__tests__/transforms/__snapshots__/vSlot.spec.ts.snap +++ b/packages/compiler-vapor/__tests__/transforms/__snapshots__/vSlot.spec.ts.snap @@ -270,7 +270,7 @@ export function render(_ctx) { }, () => { const n5 = _createComponentWithFallback(_component_Bar) return n5 - }) + }, true) return n6 }" `; diff --git a/packages/compiler-vapor/__tests__/transforms/vIf.spec.ts b/packages/compiler-vapor/__tests__/transforms/vIf.spec.ts index e5fd61add2e..e1735204d33 100644 --- a/packages/compiler-vapor/__tests__/transforms/vIf.spec.ts +++ b/packages/compiler-vapor/__tests__/transforms/vIf.spec.ts @@ -182,7 +182,7 @@ describe('compiler: v-if', () => { test('v-if + v-else-if + v-else', () => { const { code, ir } = compileWithVIf( - `

`, + `

`, ) expect(code).matchSnapshot() expect(ir.template).toEqual(['

', '

', 'fine']) diff --git a/packages/compiler-vapor/src/transforms/vIf.ts b/packages/compiler-vapor/src/transforms/vIf.ts index bae9f1aa23f..ea118c67c46 100644 --- a/packages/compiler-vapor/src/transforms/vIf.ts +++ b/packages/compiler-vapor/src/transforms/vIf.ts @@ -118,7 +118,9 @@ export function processIf( id: -1, condition: dir.exp!, positive: branch, - once: context.inVOnce, + once: + context.inVOnce || + isStaticExpression(dir.exp!, context.options.bindingMetadata), } } diff --git a/packages/compiler-vapor/src/utils.ts b/packages/compiler-vapor/src/utils.ts index 728281914fd..009541e713c 100644 --- a/packages/compiler-vapor/src/utils.ts +++ b/packages/compiler-vapor/src/utils.ts @@ -55,6 +55,12 @@ export function isStaticExpression( if (node.ast) { return isConstantNode(node.ast, bindings) } else if (node.ast === null) { + if ( + !node.isStatic && + (node.content === 'true' || node.content === 'false') + ) { + return true + } const type = bindings[node.content] return type === BindingTypes.LITERAL_CONST } From 32173132f1a107869976ee76ff8c283400bbaad9 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <260480378@qq.com> Date: Thu, 16 Oct 2025 21:53:22 +0800 Subject: [PATCH 2/2] chore: update --- packages/compiler-vapor/__tests__/transforms/vIf.spec.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/compiler-vapor/__tests__/transforms/vIf.spec.ts b/packages/compiler-vapor/__tests__/transforms/vIf.spec.ts index e1735204d33..6a8148b7c18 100644 --- a/packages/compiler-vapor/__tests__/transforms/vIf.spec.ts +++ b/packages/compiler-vapor/__tests__/transforms/vIf.spec.ts @@ -206,9 +206,12 @@ describe('compiler: v-if', () => { }, }, negative: { - type: IRNodeTypes.BLOCK, - dynamic: { - children: [{ template: 2 }], + type: IRNodeTypes.IF, + negative: { + type: IRNodeTypes.BLOCK, + dynamic: { + children: [{ template: 2 }], + }, }, }, },