diff --git a/packages/compiler-vapor/__tests__/transforms/transformElement.spec.ts b/packages/compiler-vapor/__tests__/transforms/transformElement.spec.ts
index 631beac52..5537dc274 100644
--- a/packages/compiler-vapor/__tests__/transforms/transformElement.spec.ts
+++ b/packages/compiler-vapor/__tests__/transforms/transformElement.spec.ts
@@ -6,6 +6,7 @@ import {
transformElement,
transformText,
transformVBind,
+ transformVFor,
transformVOn,
} from '../../src'
import {
@@ -15,7 +16,12 @@ import {
} from '@vue/compiler-core'
const compileWithElementTransform = makeCompile({
- nodeTransforms: [transformElement, transformChildren, transformText],
+ nodeTransforms: [
+ transformVFor,
+ transformElement,
+ transformChildren,
+ transformText,
+ ],
directiveTransforms: {
bind: transformVBind,
on: transformVOn,
@@ -185,6 +191,16 @@ describe('compiler: element transform', () => {
expect(code).contains('_createComponent(_ctx.Comp, null, null, true)')
})
+ test('generate root component with v-for', () => {
+ const { code } = compileWithElementTransform(
+ ``,
+ {
+ bindingMetadata: { Comp: BindingTypes.SETUP_CONST },
+ },
+ )
+ expect(code).contains('_createComponent(_ctx.Comp)')
+ })
+
test('generate multi root component', () => {
const { code } = compileWithElementTransform(`123`, {
bindingMetadata: { Comp: BindingTypes.SETUP_CONST },
diff --git a/packages/compiler-vapor/src/transforms/transformElement.ts b/packages/compiler-vapor/src/transforms/transformElement.ts
index 51f0e427e..668e05906 100644
--- a/packages/compiler-vapor/src/transforms/transformElement.ts
+++ b/packages/compiler-vapor/src/transforms/transformElement.ts
@@ -75,6 +75,7 @@ export const transformElement: NodeTransform = (node, context) => {
}
const singleRoot =
context.root === parent &&
+ !parent.ir.source.includes('v-for') &&
parent.node.children.filter(child => child.type !== NodeTypes.COMMENT)
.length === 1