]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(compiler-vapor): stringify number prop value
author三咲智子 Kevin Deng <sxzz@sxzz.moe>
Fri, 15 Nov 2024 20:23:21 +0000 (04:23 +0800)
committer三咲智子 Kevin Deng <sxzz@sxzz.moe>
Fri, 15 Nov 2024 20:23:21 +0000 (04:23 +0800)
packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap
packages/compiler-vapor/__tests__/transforms/__snapshots__/vBind.spec.ts.snap
packages/compiler-vapor/__tests__/transforms/vBind.spec.ts
packages/compiler-vapor/src/utils.ts

index 067610dc71e04f19f659cb56d54b376199179b99..b5833254342c45510b1a19d9720770332288700a 100644 (file)
@@ -171,7 +171,7 @@ exports[`compile > dynamic root 1`] = `
 "import { createTextNode as _createTextNode } from 'vue/vapor';
 
 export function render(_ctx) {
-  const n0 = _createTextNode([1, 2])
+  const n0 = _createTextNode(() => [1, 2])
   return n0
 }"
 `;
@@ -225,7 +225,7 @@ exports[`compile > static + dynamic root 1`] = `
 "import { createTextNode as _createTextNode } from 'vue/vapor';
 
 export function render(_ctx) {
-  const n0 = _createTextNode([1, 2, "3", 4, 5, "6", 7, 8, "9", 'A', 'B'])
+  const n0 = _createTextNode(() => [1, 2, "3", 4, 5, "6", 7, 8, "9", 'A', 'B'])
   return n0
 }"
 `;
index 5e1e43c88d37374d6afcc26a38171b018122b13e..16e60bd846e092d6247cbea27f41953139b3a879 100644 (file)
@@ -181,6 +181,18 @@ export function render(_ctx) {
 }"
 `;
 
+exports[`compiler v-bind > number value 1`] = `
+"import { resolveComponent as _resolveComponent, createComponent as _createComponent } from 'vue/vapor';
+
+export function render(_ctx) {
+  const _component_Comp = _resolveComponent("Comp")
+  const n0 = _createComponent(_component_Comp, [
+    { depth: () => (0) }
+  ], null, true)
+  return n0
+}"
+`;
+
 exports[`compiler v-bind > should error if empty expression 1`] = `
 "import { setInheritAttrs as _setInheritAttrs, template as _template } from 'vue/vapor';
 const t0 = _template("<div arg></div>")
index 0097d0b7ca9fd2ab7292ae673531a6b2d2872650..a419f55ddef59d812dcf116f4aca32f02d149311 100644 (file)
@@ -526,4 +526,10 @@ describe('compiler v-bind', () => {
     expect(code).contains('renderEffect')
     expect(code).contains('_setAttr(n0, "foo-bar", _ctx.fooBar, true)')
   })
+
+  test('number value', () => {
+    const { code } = compileWithVBind(`<Comp :depth="0" />`)
+    expect(code).matchSnapshot()
+    expect(code).contains('{ depth: () => (0) }')
+  })
 })
index a304e6a4a633352fee9730bfb8537c6b4a4b9b85..319eb9f492f24eea5a26e517ae77000110d31018 100644 (file)
@@ -61,11 +61,7 @@ export function getLiteralExpressionValue(
   exp: SimpleExpressionNode,
 ): number | string | boolean | null {
   if (exp.ast) {
-    if (
-      ['StringLiteral', 'NumericLiteral', 'BigIntLiteral'].includes(
-        exp.ast.type,
-      )
-    ) {
+    if (exp.ast.type === 'StringLiteral') {
       return (exp.ast as StringLiteral | NumericLiteral | BigIntLiteral).value
     } else if (
       exp.ast.type === 'TemplateLiteral' &&