expect((node.branches[0].children[0] as ElementNode).tagType).toBe(
ElementTypes.COMPONENT
)
+ // #2058 since a component may fail to resolve and fallback to a plain
+ // element, it still needs to be made a block
expect(
((node.branches[0].children[0] as ElementNode)!
.codegenNode as VNodeCall)!.isBlock
- ).toBe(false)
+ ).toBe(true)
})
test('v-if + v-else', () => {
CREATE_BLOCK,
FRAGMENT,
CREATE_COMMENT,
- OPEN_BLOCK,
- TELEPORT
+ OPEN_BLOCK
} from '../runtimeHelpers'
import { injectProp, findDir, findProp } from '../utils'
import { PatchFlags, PatchFlagNames } from '@vue/shared'
const vnodeCall = (firstChild as ElementNode)
.codegenNode as BlockCodegenNode
// Change createVNode to createBlock.
- if (
- vnodeCall.type === NodeTypes.VNODE_CALL &&
- // component vnodes are always tracked and its children are
- // compiled into slots so no need to make it a block
- ((firstChild as ElementNode).tagType !== ElementTypes.COMPONENT ||
- // teleport has component type but isn't always tracked
- vnodeCall.tag === TELEPORT)
- ) {
+ if (vnodeCall.type === NodeTypes.VNODE_CALL) {
vnodeCall.isBlock = true
helper(OPEN_BLOCK)
helper(CREATE_BLOCK)