: _createBlock(_Fragment, { key: 1 }, [
\\"no\\"
])),
- _createVNode(_Fragment, null, _renderList(list, (value, index) => {
+ (_openBlock(), _createBlock(_Fragment, null, _renderList(list, (value, index) => {
return (_openBlock(), _createBlock(\\"div\\", null, [
_createVNode(\\"span\\", null, _toString(value + index), 1 /* TEXT */)
]))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
], 2 /* CLASS */)
}
}"
: createBlock(Fragment, { key: 1 }, [
\\"no\\"
])),
- createVNode(Fragment, null, renderList(_ctx.list, (value, index) => {
+ (openBlock(), createBlock(Fragment, null, renderList(_ctx.list, (value, index) => {
return (openBlock(), createBlock(\\"div\\", null, [
createVNode(\\"span\\", null, toString(value + index), 1 /* TEXT */)
]))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
], 2 /* CLASS */)
}"
`;
: createBlock(Fragment, { key: 1 }, [
\\"no\\"
])),
- createVNode(Fragment, null, renderList(_ctx.list, (value, index) => {
+ (openBlock(), createBlock(Fragment, null, renderList(_ctx.list, (value, index) => {
return (openBlock(), createBlock(\\"div\\", null, [
createVNode(\\"span\\", null, _toString(value + index), 1 /* TEXT */)
]))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
], 2 /* CLASS */)
}"
`;
return function render() {
with (this) {
- const { renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, createBlock: _createBlock, openBlock: _openBlock } = _Vue
+ const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
- return _createVNode(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createBlock(_Fragment, null, _renderList(items, (item) => {
return (_openBlock(), _createBlock(\\"span\\"))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
}
}"
`;
return function render() {
with (this) {
- const { renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, openBlock: _openBlock, createBlock: _createBlock } = _Vue
+ const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
- return _createVNode(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createBlock(_Fragment, null, _renderList(items, (item) => {
return (_openBlock(), _createBlock(_Fragment, { key: item }, [
\\"hello\\",
_createVNode(\\"span\\")
]))
- }), 64 /* KEYED_FRAGMENT */)
+ }), 64 /* KEYED_FRAGMENT */))
}
}"
`;
return function render() {
with (this) {
- const { renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, createBlock: _createBlock, openBlock: _openBlock } = _Vue
+ const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
- return _createVNode(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createBlock(_Fragment, null, _renderList(items, (item) => {
return (_openBlock(), _createBlock(\\"span\\", { key: item }))
- }), 64 /* KEYED_FRAGMENT */)
+ }), 64 /* KEYED_FRAGMENT */))
}
}"
`;
return function render() {
with (this) {
- const { renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, createBlock: _createBlock, openBlock: _openBlock } = _Vue
+ const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
- return _createVNode(_Fragment, null, _renderList(items, (item, __, index) => {
+ return (_openBlock(), _createBlock(_Fragment, null, _renderList(items, (item, __, index) => {
return (_openBlock(), _createBlock(\\"span\\"))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
}
}"
`;
return function render() {
with (this) {
- const { renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, createBlock: _createBlock, openBlock: _openBlock } = _Vue
+ const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
- return _createVNode(_Fragment, null, _renderList(items, (_, __, index) => {
+ return (_openBlock(), _createBlock(_Fragment, null, _renderList(items, (_, __, index) => {
return (_openBlock(), _createBlock(\\"span\\"))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
}
}"
`;
return function render() {
with (this) {
- const { renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, createBlock: _createBlock, openBlock: _openBlock } = _Vue
+ const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
- return _createVNode(_Fragment, null, _renderList(items, (_, key, index) => {
+ return (_openBlock(), _createBlock(_Fragment, null, _renderList(items, (_, key, index) => {
return (_openBlock(), _createBlock(\\"span\\"))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
}
}"
`;
return function render() {
with (this) {
- const { renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, openBlock: _openBlock, createBlock: _createBlock } = _Vue
+ const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
- return _createVNode(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createBlock(_Fragment, null, _renderList(items, (item) => {
return (_openBlock(), _createBlock(_Fragment, null, [
\\"hello\\",
_createVNode(\\"span\\")
]))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
}
}"
`;
return function render() {
with (this) {
- const { renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, renderSlot: _renderSlot, openBlock: _openBlock, createBlock: _createBlock } = _Vue
+ const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, renderSlot: _renderSlot } = _Vue
- return _createVNode(_Fragment, null, _renderList(items, (item) => {
+ return (_openBlock(), _createBlock(_Fragment, null, _renderList(items, (item) => {
return (_openBlock(), _createBlock(_Fragment, null, _renderSlot($slots.default)))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
}
}"
`;
return function render() {
with (this) {
- const { openBlock: _openBlock, renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, createBlock: _createBlock, Empty: _Empty } = _Vue
+ const { openBlock: _openBlock, renderList: _renderList, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode, Empty: _Empty } = _Vue
return (_openBlock(), ok
? _createBlock(_Fragment, { key: 0 }, _renderList(list, (i) => {
return function render() {
with (this) {
- const { renderList: _renderList, createVNode: _createVNode, Fragment: _Fragment, createBlock: _createBlock, openBlock: _openBlock } = _Vue
+ const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
- return _createVNode(_Fragment, null, _renderList(items, (item, key, index) => {
+ return (_openBlock(), _createBlock(_Fragment, null, _renderList(items, (item, key, index) => {
return (_openBlock(), _createBlock(\\"span\\"))
- }), 128 /* UNKEYED_FRAGMENT */)
+ }), 128 /* UNKEYED_FRAGMENT */))
}
}"
`;
SimpleExpressionNode,
ElementNode,
InterpolationNode,
- CallExpression
+ CallExpression,
+ SequenceExpression
} from '../../src/ast'
import { ErrorCodes } from '../../src/errors'
import { CompilerOptions, generate } from '../../src'
CREATE_BLOCK,
FRAGMENT,
RENDER_LIST,
- CREATE_VNODE,
RENDER_SLOT
} from '../../src/runtimeConstants'
import { PatchFlags } from '@vue/runtime-dom'
})
describe('codegen', () => {
- function assertSharedCodegen(node: CallExpression, keyed: boolean = false) {
+ function assertSharedCodegen(
+ node: SequenceExpression,
+ keyed: boolean = false
+ ) {
expect(node).toMatchObject({
- type: NodeTypes.JS_CALL_EXPRESSION,
- callee: `_${CREATE_VNODE}`,
- arguments: [
- `_${FRAGMENT}`,
- `null`,
+ type: NodeTypes.JS_SEQUENCE_EXPRESSION,
+ expressions: [
+ {
+ type: NodeTypes.JS_CALL_EXPRESSION,
+ callee: `_${OPEN_BLOCK}`
+ },
{
type: NodeTypes.JS_CALL_EXPRESSION,
- callee: `_${RENDER_LIST}`,
+ callee: `_${CREATE_BLOCK}`,
arguments: [
- {}, // to be asserted by each test
+ `_${FRAGMENT}`,
+ `null`,
{
- type: NodeTypes.JS_FUNCTION_EXPRESSION,
- returns: {
- type: NodeTypes.JS_SEQUENCE_EXPRESSION,
- expressions: [
- {
- type: NodeTypes.JS_CALL_EXPRESSION,
- callee: `_${OPEN_BLOCK}`
- },
- {
- type: NodeTypes.JS_CALL_EXPRESSION,
- callee: `_${CREATE_BLOCK}`
+ type: NodeTypes.JS_CALL_EXPRESSION,
+ callee: `_${RENDER_LIST}`,
+ arguments: [
+ {}, // to be asserted by each test
+ {
+ type: NodeTypes.JS_FUNCTION_EXPRESSION,
+ returns: {
+ type: NodeTypes.JS_SEQUENCE_EXPRESSION,
+ expressions: [
+ {
+ type: NodeTypes.JS_CALL_EXPRESSION,
+ callee: `_${OPEN_BLOCK}`
+ },
+ {
+ type: NodeTypes.JS_CALL_EXPRESSION,
+ callee: `_${CREATE_BLOCK}`
+ }
+ ]
}
- ]
- }
- }
+ }
+ ]
+ },
+ keyed
+ ? `${PatchFlags.KEYED_FRAGMENT} /* ${
+ PatchFlagNames[PatchFlags.KEYED_FRAGMENT]
+ } */`
+ : `${PatchFlags.UNKEYED_FRAGMENT} /* ${
+ PatchFlagNames[PatchFlags.UNKEYED_FRAGMENT]
+ } */`
]
- },
- keyed
- ? `${PatchFlags.KEYED_FRAGMENT} /* ${
- PatchFlagNames[PatchFlags.KEYED_FRAGMENT]
- } */`
- : `${PatchFlags.UNKEYED_FRAGMENT} /* ${
- PatchFlagNames[PatchFlags.UNKEYED_FRAGMENT]
- } */`
+ }
]
})
- const renderListArgs = (node.arguments[2] as CallExpression).arguments
+ const renderListArgs = ((node.expressions[1] as CallExpression)
+ .arguments[2] as CallExpression).arguments
return {
source: renderListArgs[0] as SimpleExpressionNode,
params: (renderListArgs[1] as any).params,