fix(compiler-core): detect v-if branch root with comment as dev fragment (#2785)
fix #2780
This commit is contained in:
parent
3755e60c52
commit
4bf7ba19bf
@ -16,7 +16,7 @@ return function render(_ctx, _cache) {
|
|||||||
? (_openBlock(), _createBlock(\\"div\\", { key: 0 }, \\"yes\\"))
|
? (_openBlock(), _createBlock(\\"div\\", { key: 0 }, \\"yes\\"))
|
||||||
: (_openBlock(), _createBlock(_Fragment, { key: 1 }, [
|
: (_openBlock(), _createBlock(_Fragment, { key: 1 }, [
|
||||||
_createTextVNode(\\"no\\")
|
_createTextVNode(\\"no\\")
|
||||||
], 64 /* STABLE_FRAGMENT */)),
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */)),
|
||||||
(_openBlock(true), _createBlock(_Fragment, null, _renderList(list, (value, index) => {
|
(_openBlock(true), _createBlock(_Fragment, null, _renderList(list, (value, index) => {
|
||||||
return (_openBlock(), _createBlock(\\"div\\", null, [
|
return (_openBlock(), _createBlock(\\"div\\", null, [
|
||||||
_createVNode(\\"span\\", null, _toDisplayString(value + index), 1 /* TEXT */)
|
_createVNode(\\"span\\", null, _toDisplayString(value + index), 1 /* TEXT */)
|
||||||
@ -40,7 +40,7 @@ return function render(_ctx, _cache) {
|
|||||||
? (_openBlock(), _createBlock(\\"div\\", { key: 0 }, \\"yes\\"))
|
? (_openBlock(), _createBlock(\\"div\\", { key: 0 }, \\"yes\\"))
|
||||||
: (_openBlock(), _createBlock(_Fragment, { key: 1 }, [
|
: (_openBlock(), _createBlock(_Fragment, { key: 1 }, [
|
||||||
_createTextVNode(\\"no\\")
|
_createTextVNode(\\"no\\")
|
||||||
], 64 /* STABLE_FRAGMENT */)),
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */)),
|
||||||
(_openBlock(true), _createBlock(_Fragment, null, _renderList(_ctx.list, (value, index) => {
|
(_openBlock(true), _createBlock(_Fragment, null, _renderList(_ctx.list, (value, index) => {
|
||||||
return (_openBlock(), _createBlock(\\"div\\", null, [
|
return (_openBlock(), _createBlock(\\"div\\", null, [
|
||||||
_createVNode(\\"span\\", null, _toDisplayString(value + index), 1 /* TEXT */)
|
_createVNode(\\"span\\", null, _toDisplayString(value + index), 1 /* TEXT */)
|
||||||
@ -63,7 +63,7 @@ export function render(_ctx, _cache) {
|
|||||||
? (_openBlock(), _createBlock(\\"div\\", { key: 0 }, \\"yes\\"))
|
? (_openBlock(), _createBlock(\\"div\\", { key: 0 }, \\"yes\\"))
|
||||||
: (_openBlock(), _createBlock(_Fragment, { key: 1 }, [
|
: (_openBlock(), _createBlock(_Fragment, { key: 1 }, [
|
||||||
_createTextVNode(\\"no\\")
|
_createTextVNode(\\"no\\")
|
||||||
], 64 /* STABLE_FRAGMENT */)),
|
], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */)),
|
||||||
(_openBlock(true), _createBlock(_Fragment, null, _renderList(_ctx.list, (value, index) => {
|
(_openBlock(true), _createBlock(_Fragment, null, _renderList(_ctx.list, (value, index) => {
|
||||||
return (_openBlock(), _createBlock(\\"div\\", null, [
|
return (_openBlock(), _createBlock(\\"div\\", null, [
|
||||||
_createVNode(\\"span\\", null, _toDisplayString(value + index), 1 /* TEXT */)
|
_createVNode(\\"span\\", null, _toDisplayString(value + index), 1 /* TEXT */)
|
||||||
|
@ -111,7 +111,7 @@ return function render(_ctx, _cache) {
|
|||||||
? (_openBlock(), _createBlock(\\"div\\", { key: 0 }))
|
? (_openBlock(), _createBlock(\\"div\\", { key: 0 }))
|
||||||
: orNot
|
: orNot
|
||||||
? (_openBlock(), _createBlock(\\"p\\", { key: 1 }))
|
? (_openBlock(), _createBlock(\\"p\\", { key: 1 }))
|
||||||
: (_openBlock(), _createBlock(_Fragment, { key: 2 }, [\\"fine\\"], 64 /* STABLE_FRAGMENT */))
|
: (_openBlock(), _createBlock(_Fragment, { key: 2 }, [\\"fine\\"], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))
|
||||||
}
|
}
|
||||||
}"
|
}"
|
||||||
`;
|
`;
|
||||||
|
@ -246,15 +246,24 @@ function createChildrenCodegenNode(
|
|||||||
injectProp(vnodeCall, keyProperty, context)
|
injectProp(vnodeCall, keyProperty, context)
|
||||||
return vnodeCall
|
return vnodeCall
|
||||||
} else {
|
} else {
|
||||||
|
let patchFlag = PatchFlags.STABLE_FRAGMENT
|
||||||
|
let patchFlagText = PatchFlagNames[PatchFlags.STABLE_FRAGMENT]
|
||||||
|
// check if the fragment actually contains a single valid child with
|
||||||
|
// the rest being comments
|
||||||
|
if (
|
||||||
|
__DEV__ &&
|
||||||
|
children.filter(c => c.type !== NodeTypes.COMMENT).length === 1
|
||||||
|
) {
|
||||||
|
patchFlag |= PatchFlags.DEV_ROOT_FRAGMENT
|
||||||
|
patchFlagText += `, ${PatchFlagNames[PatchFlags.DEV_ROOT_FRAGMENT]}`
|
||||||
|
}
|
||||||
|
|
||||||
return createVNodeCall(
|
return createVNodeCall(
|
||||||
context,
|
context,
|
||||||
helper(FRAGMENT),
|
helper(FRAGMENT),
|
||||||
createObjectExpression([keyProperty]),
|
createObjectExpression([keyProperty]),
|
||||||
children,
|
children,
|
||||||
PatchFlags.STABLE_FRAGMENT +
|
patchFlag + (__DEV__ ? ` /* ${patchFlagText} */` : ``),
|
||||||
(__DEV__
|
|
||||||
? ` /* ${PatchFlagNames[PatchFlags.STABLE_FRAGMENT]} */`
|
|
||||||
: ``),
|
|
||||||
undefined,
|
undefined,
|
||||||
undefined,
|
undefined,
|
||||||
true,
|
true,
|
||||||
|
Loading…
Reference in New Issue
Block a user