Преглед на файлове

fix(compiler-vapor): ignore comments when checking extraneous default slot children (#14601)

Jack преди 1 месец
родител
ревизия
5af41dd36b
променени са 2 файла, в които са добавени 11 реда и са изтрити 1 реда
  1. 7 0
      packages/compiler-vapor/__tests__/transforms/vSlot.spec.ts
  2. 4 1
      packages/compiler-vapor/src/transforms/vSlot.ts

+ 7 - 0
packages/compiler-vapor/__tests__/transforms/vSlot.spec.ts

@@ -563,6 +563,13 @@ describe('compiler: transform slot', () => {
       })
     })
 
+    test('ignore comments when checking extraneous default slot children', () => {
+      const onError = vi.fn()
+      const source = `<Comp><template #default>foo</template><!--  --></Comp>`
+      compileWithSlots(source, { onError })
+      expect(onError).not.toHaveBeenCalled()
+    })
+
     test('error on duplicated slot names', () => {
       const onError = vi.fn()
       const source = `<Comp><template #foo></template><template #foo></template></Comp>`

+ 4 - 1
packages/compiler-vapor/src/transforms/vSlot.ts

@@ -72,7 +72,10 @@ function transformComponentSlot(
   const emptyTextNodes: TemplateChildNode[] = []
   const nonSlotTemplateChildren = children.filter(n => {
     if (isNonWhitespaceContent(n)) {
-      return !(n.type === NodeTypes.ELEMENT && n.props.some(isVSlot))
+      return !(
+        n.type === NodeTypes.COMMENT ||
+        (n.type === NodeTypes.ELEMENT && n.props.some(isVSlot))
+      )
     } else {
       emptyTextNodes.push(n)
     }