]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
refactor(compiler-vapor): decoupe insert and non-template
author三咲智子 Kevin Deng <sxzz@sxzz.moe>
Mon, 29 Jan 2024 14:15:34 +0000 (22:15 +0800)
committer三咲智子 Kevin Deng <sxzz@sxzz.moe>
Mon, 29 Jan 2024 14:15:34 +0000 (22:15 +0800)
packages/compiler-vapor/src/generate.ts
packages/compiler-vapor/src/transforms/transformInterpolation.ts
packages/compiler-vapor/src/transforms/vIf.ts

index 1f2b04624a94ad70b0d981b8a0a343f8bc08878a..b673e0585a1af7ec2b3147e044a482d564607523 100644 (file)
@@ -318,12 +318,7 @@ function genChildren(children: IRDynamicChildren) {
   let offset = 0
   for (const [index, child] of Object.entries(children)) {
     const childrenLength = Object.keys(child.children).length
-    if (
-      child.dynamicFlags & DynamicFlag.NON_TEMPLATE ||
-      (child.dynamicFlags & DynamicFlag.INSERT &&
-        child.placeholder === null &&
-        childrenLength === 0)
-    ) {
+    if (child.dynamicFlags & DynamicFlag.NON_TEMPLATE) {
       offset--
       continue
     }
index 27f6a2b74b1945c57204859c91a71f904397c4a6..4648cb78831a7837e87cd34d7c15fef8c445ae92 100644 (file)
@@ -27,7 +27,7 @@ export const transformInterpolation: NodeTransform = (node, ctx) => {
     )
   } else {
     const id = ctx.reference()
-    ctx.dynamic.dynamicFlags |= DynamicFlag.INSERT
+    ctx.dynamic.dynamicFlags |= DynamicFlag.INSERT | DynamicFlag.NON_TEMPLATE
     ctx.registerOperation({
       type: IRNodeTypes.CREATE_TEXT_NODE,
       loc: node.loc,
index 70e4523154227a49e93ddb56b92d03fe9b682c55..b06086b1cd0e6910a79fa8f0a076db9d3569de83 100644 (file)
@@ -42,6 +42,7 @@ export function processIf(
     dir.exp = createSimpleExpression(`true`, false, loc)
   }
 
+  context.dynamic.dynamicFlags |= DynamicFlag.NON_TEMPLATE
   if (dir.name === 'if') {
     const id = context.reference()
     context.dynamic.dynamicFlags |= DynamicFlag.INSERT
@@ -58,8 +59,6 @@ export function processIf(
       })
     }
   } else {
-    context.dynamic.dynamicFlags |= DynamicFlag.NON_TEMPLATE
-
     // check the adjacent v-if
     const parent = context.parent!
     const siblings = parent.node.children