]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
test(compiler-vapor): add test for v-if + v-if / v-else[-if] scenario 13399/head
authordaiwei <daiwei521@126.com>
Thu, 12 Jun 2025 09:22:18 +0000 (17:22 +0800)
committerdaiwei <daiwei521@126.com>
Thu, 12 Jun 2025 09:22:18 +0000 (17:22 +0800)
packages/compiler-vapor/__tests__/transforms/__snapshots__/vIf.spec.ts.snap
packages/compiler-vapor/__tests__/transforms/vIf.spec.ts
packages/compiler-vapor/src/transforms/vIf.ts

index 16ab6ae37200c414d521b0a4e9d961da05b8e468..c41dc9226c59f1c1c46dfd244e7f228cfc73cdbc 100644 (file)
@@ -134,3 +134,29 @@ export function render(_ctx) {
   return n0
 }"
 `;
+
+exports[`compiler: v-if > v-if + v-if / v-else[-if] 1`] = `
+"import { setInsertionState as _setInsertionState, createIf as _createIf, template as _template } from 'vue';
+const t0 = _template("<span>foo</span>")
+const t1 = _template("<span>bar</span>")
+const t2 = _template("<span>baz</span>")
+const t3 = _template("<div></div>", true)
+
+export function render(_ctx) {
+  const n8 = t3()
+  _setInsertionState(n8)
+  const n0 = _createIf(() => (_ctx.foo), () => {
+    const n2 = t0()
+    return n2
+  })
+  _setInsertionState(n8)
+  const n3 = _createIf(() => (_ctx.bar), () => {
+    const n5 = t1()
+    return n5
+  }, () => {
+    const n7 = t2()
+    return n7
+  })
+  return n8
+}"
+`;
index 66cdf7b9306a39bafe2475c3ed504077e2ff886e..f51988e2e4d3a5b8dc59c21686df07ddc7d3bc01 100644 (file)
@@ -215,6 +215,17 @@ describe('compiler: v-if', () => {
     })
   })
 
+  test('v-if + v-if / v-else[-if]', () => {
+    const { code } = compileWithVIf(
+      `<div>
+        <span v-if="foo">foo</span>
+        <span v-if="bar">bar</span>
+        <span v-else>baz</span>
+      </div>`,
+    )
+    expect(code).toMatchSnapshot()
+  })
+
   test('comment between branches', () => {
     const { code, ir } = compileWithVIf(`
       <div v-if="ok"/>
index e69d1901b4dffc550d6e72729db48748e6d890ee..bae9f1aa23f81227c19914fc47b336f3f2db7f17 100644 (file)
@@ -68,8 +68,10 @@ export function processIf(
         if (
           siblings[i].operation &&
           siblings[i].operation!.type === IRNodeTypes.IF
-        )
+        ) {
           lastIfNode = siblings[i].operation
+          break
+        }
       }
     }