]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix: remove get children when no dynamic node
author三咲智子 Kevin Deng <sxzz@sxzz.moe>
Fri, 24 Nov 2023 11:57:20 +0000 (19:57 +0800)
committer三咲智子 Kevin Deng <sxzz@sxzz.moe>
Fri, 24 Nov 2023 11:57:20 +0000 (19:57 +0800)
packages/compiler-vapor/__tests__/__snapshots__/compile.test.ts.snap [new file with mode: 0644]
packages/compiler-vapor/__tests__/__snapshots__/fixtures.test.ts.snap [moved from packages/compiler-vapor/__tests__/__snapshots__/basic.test.ts.snap with 97% similarity]
packages/compiler-vapor/__tests__/compile.test.ts [new file with mode: 0644]
packages/compiler-vapor/__tests__/fixtures.test.ts [moved from packages/compiler-vapor/__tests__/basic.test.ts with 83% similarity]
packages/compiler-vapor/src/generate.ts

diff --git a/packages/compiler-vapor/__tests__/__snapshots__/compile.test.ts.snap b/packages/compiler-vapor/__tests__/__snapshots__/compile.test.ts.snap
new file mode 100644 (file)
index 0000000..b83f0de
--- /dev/null
@@ -0,0 +1,23 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`comile > bindings 1`] = `
+"import { watchEffect } from 'vue'
+import { template, setText } from 'vue/vapor'
+const t0 = template(\`<div></div>\`)
+export function render() {
+const root = t0()
+watchEffect(() => {
+setText(n0, undefined, count.value)
+})
+return root
+}"
+`;
+
+exports[`comile > static template 1`] = `
+"import { template } from 'vue/vapor'
+const t0 = template(\`<div><p>hello</p><input></div>\`)
+export function render() {
+const root = t0()
+return root
+}"
+`;
similarity index 97%
rename from packages/compiler-vapor/__tests__/__snapshots__/basic.test.ts.snap
rename to packages/compiler-vapor/__tests__/__snapshots__/fixtures.test.ts.snap
index 1a578cd93e1e66002874f29fc7bf0059d888ac9f..4a4d7c6ced9d77c8abb2c4375953bfd8bd26f92e 100644 (file)
@@ -1,6 +1,6 @@
 // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
 
-exports[`basic 1`] = `
+exports[`fixtures 1`] = `
 "import { defineComponent as _defineComponent } from 'vue'
 import { watchEffect } from 'vue'
 import { template, insert, setText, on, setHtml } from 'vue/vapor'
diff --git a/packages/compiler-vapor/__tests__/compile.test.ts b/packages/compiler-vapor/__tests__/compile.test.ts
new file mode 100644 (file)
index 0000000..2e02f28
--- /dev/null
@@ -0,0 +1,24 @@
+import { BindingTypes } from '@vue/compiler-dom'
+import { compile } from '../src'
+
+describe('comile', () => {
+  it('static template', () => {
+    const { code } = compile(
+      `<div>
+        <p>hello</p>
+        <input />
+      </div>`,
+      {},
+    )
+    expect(code).matchSnapshot()
+  })
+
+  it('bindings', () => {
+    const { code } = compile(`<div>{{ count }}</div>`, {
+      bindingMetadata: {
+        count: BindingTypes.SETUP_REF,
+      },
+    })
+    expect(code).matchSnapshot()
+  })
+})
similarity index 83%
rename from packages/compiler-vapor/__tests__/basic.test.ts
rename to packages/compiler-vapor/__tests__/fixtures.test.ts
index dc83c2e706ca17c6550e25d10050a6983495c084..7ece9c981d5c6e668d9ee2ed77931c1483d1fae2 100644 (file)
@@ -1,9 +1,8 @@
 import * as CompilerVapor from '../src'
-// import * as CompilerDOM from '@vue/compiler-dom'
 import { parse, compileScript } from '@vue/compiler-sfc'
 import source from './fixtures/counter.vue?raw'
 
-test('basic', async () => {
+test('fixtures', async () => {
   const { descriptor } = parse(source, { compiler: CompilerVapor })
   const script = compileScript(descriptor, {
     id: 'counter.vue',
index bef9705bdea30d227349b89a4b55d89eb998c9d6..e2ed01b73ead33c70f5aa14a124224053e8ac49d 100644 (file)
@@ -29,7 +29,7 @@ export function generate(
 
   // TODO multiple-template
   code += `const root = t0()\n`
-  if (ir.children[0]) {
+  if (ir.children[0] && Object.keys(ir.children[0].children).length) {
     code += `const {${genChildren(ir.children[0].children)}} = children(root)\n`
     vaporHelpers.add('children')
   }