From c23153d82eb2aa57d254dd362a78383defec3968 Mon Sep 17 00:00:00 2001 From: edison Date: Thu, 15 Jul 2021 23:37:11 +0800 Subject: [PATCH] fix(compiler-core): fix forwarded slots detection on template slots (#4124) fix #4123 --- packages/compiler-core/__tests__/transforms/vSlot.spec.ts | 7 +++++++ packages/compiler-core/src/transforms/vSlot.ts | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/compiler-core/__tests__/transforms/vSlot.spec.ts b/packages/compiler-core/__tests__/transforms/vSlot.spec.ts index beddd212..bb26d668 100644 --- a/packages/compiler-core/__tests__/transforms/vSlot.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vSlot.spec.ts @@ -771,6 +771,13 @@ describe('compiler: transform component slots', () => { const { slots } = parseWithSlots(``) expect(slots).toMatchObject(toMatch) }) + + test(' tag w/ template', () => { + const { slots } = parseWithSlots( + `` + ) + expect(slots).toMatchObject(toMatch) + }) }) describe('errors', () => { diff --git a/packages/compiler-core/src/transforms/vSlot.ts b/packages/compiler-core/src/transforms/vSlot.ts index 327bac44..1e784c82 100644 --- a/packages/compiler-core/src/transforms/vSlot.ts +++ b/packages/compiler-core/src/transforms/vSlot.ts @@ -384,7 +384,8 @@ function hasForwardedSlots(children: TemplateChildNode[]): boolean { case NodeTypes.ELEMENT: if ( child.tagType === ElementTypes.SLOT || - (child.tagType === ElementTypes.ELEMENT && + ((child.tagType === ElementTypes.ELEMENT || + child.tagType === ElementTypes.TEMPLATE) && hasForwardedSlots(child.children)) ) { return true