exports[`compiler: codegen ArrayExpression 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return [
foo,
exports[`compiler: codegen CacheExpression 1`] = `
"
-export function render() {
- const _ctx = this
- const _cache = _ctx.$cache
+export function render(_ctx, _cache) {
return _cache[1] || (_cache[1] = foo)
}"
`;
exports[`compiler: codegen CacheExpression w/ isVNode: true 1`] = `
"
-export function render() {
- const _ctx = this
- const _cache = _ctx.$cache
+export function render(_ctx, _cache) {
return _cache[1] || (
_setBlockTracking(-1),
_cache[1] = foo,
exports[`compiler: codegen ConditionalExpression 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return ok
? foo()
exports[`compiler: codegen Element (callExpression + objectExpression + TemplateChildNode[]) 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return _createVNode(\\"div\\", {
id: \\"foo\\",
exports[`compiler: codegen SequenceExpression 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return (foo, bar(baz))
}
exports[`compiler: codegen assets + temps 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const _component_Foo = _resolveComponent(\\"Foo\\")
const _component_bar_baz = _resolveComponent(\\"bar-baz\\")
exports[`compiler: codegen comment 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return _createCommentVNode(\\"foo\\")
}
exports[`compiler: codegen compound expression 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return _ctx.foo + _toDisplayString(bar) + nested
}
exports[`compiler: codegen forNode 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return (foo, bar)
}
exports[`compiler: codegen function mode preamble 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, resolveDirective: _resolveDirective } = _Vue
exports[`compiler: codegen function mode preamble w/ prefixIdentifiers: true 1`] = `
"const { createVNode: _createVNode, resolveDirective: _resolveDirective } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
return null
}"
`;
const _hoisted_1 = hello
const _hoisted_2 = { id: \\"foo\\" }
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return null
}
exports[`compiler: codegen ifNode 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return (foo, bar)
}
exports[`compiler: codegen interpolation 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return _toDisplayString(hello)
}
exports[`compiler: codegen module mode preamble 1`] = `
"import { createVNode as _createVNode, resolveDirective as _resolveDirective } from \\"vue\\"
-export function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return null
}"
`;
// Binding optimization for webpack code-split
const _createVNode = createVNode, _resolveDirective = resolveDirective
-export function render() {
- const _ctx = this
- return null
-}"
-`;
-
-exports[`compiler: codegen prefixIdentifiers: true should inject _ctx statement 1`] = `
-"
-return function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return null
}"
`;
exports[`compiler: codegen static text 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
return \\"hello\\"
}
exports[`compiler: codegen temps 1`] = `
"
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
let _temp0, _temp1, _temp2
exports[`compiler: integration tests function mode 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { toDisplayString: _toDisplayString, createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock, createCommentVNode: _createCommentVNode, Fragment: _Fragment, renderList: _renderList, createTextVNode: _createTextVNode } = _Vue
exports[`compiler: integration tests function mode w/ prefixIdentifiers: true 1`] = `
"const { toDisplayString: _toDisplayString, createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock, createCommentVNode: _createCommentVNode, Fragment: _Fragment, renderList: _renderList, createTextVNode: _createTextVNode } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"div\\", {
id: \\"foo\\",
class: _ctx.bar.baz
exports[`compiler: integration tests module mode 1`] = `
"import { toDisplayString as _toDisplayString, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment, renderList as _renderList, createTextVNode as _createTextVNode } from \\"vue\\"
-export function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"div\\", {
id: \\"foo\\",
class: _ctx.bar.baz
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`scopeId compiler support should push scopeId for hoisted nodes 1`] = `
-"import { createVNode as _createVNode, createBlock as _createBlock, openBlock as _openBlock, withScopeId as _withScopeId, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \\"vue\\"
+"import { createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createBlock as _createBlock, openBlock as _openBlock, withScopeId as _withScopeId, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \\"vue\\"
const _withId = _withScopeId(\\"test\\")
_pushScopeId(\\"test\\")
const _hoisted_2 = _createVNode(\\"div\\", null, \\"world\\")
_popScopeId()
-export const render = _withId(function render() {
- const _ctx = this
+export const render = _withId(function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"div\\", null, [
_hoisted_1,
+ _createTextVNode(_toDisplayString(_ctx.foo), 1 /* TEXT */),
_hoisted_2
]))
})"
"import { createVNode as _createVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, openBlock as _openBlock, withScopeId as _withScopeId } from \\"vue\\"
const _withId = _withScopeId(\\"test\\")
-export const render = _withId(function render() {
- const _ctx = this
+export const render = _withId(function render(_ctx, _cache) {
const _component_Child = _resolveComponent(\\"Child\\")
return (_openBlock(), _createBlock(_component_Child, null, {
"import { createVNode as _createVNode, resolveComponent as _resolveComponent, renderList as _renderList, createSlots as _createSlots, createBlock as _createBlock, openBlock as _openBlock, withScopeId as _withScopeId } from \\"vue\\"
const _withId = _withScopeId(\\"test\\")
-export const render = _withId(function render() {
- const _ctx = this
+export const render = _withId(function render(_ctx, _cache) {
const _component_Child = _resolveComponent(\\"Child\\")
return (_openBlock(), _createBlock(_component_Child, null, _createSlots({ _compiled: true }, [
"import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, openBlock as _openBlock, withScopeId as _withScopeId } from \\"vue\\"
const _withId = _withScopeId(\\"test\\")
-export const render = _withId(function render() {
- const _ctx = this
+export const render = _withId(function render(_ctx, _cache) {
const _component_Child = _resolveComponent(\\"Child\\")
return (_openBlock(), _createBlock(_component_Child, null, {
"import { createVNode as _createVNode, createBlock as _createBlock, openBlock as _openBlock, withScopeId as _withScopeId } from \\"vue\\"
const _withId = _withScopeId(\\"test\\")
-export const render = _withId(function render() {
- const _ctx = this
+export const render = _withId(function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"div\\"))
})"
`;
expect(code).toMatchSnapshot()
})
- test('prefixIdentifiers: true should inject _ctx statement', () => {
- const { code } = generate(createRoot(), { prefixIdentifiers: true })
- expect(code).toMatch(`const _ctx = this\n`)
- expect(code).toMatchSnapshot()
- })
-
test('static text', () => {
const { code } = generate(
createRoot({
prefixIdentifiers: true
}
)
- expect(code).toMatch(`const _cache = _ctx.$cache`)
expect(code).toMatch(`_cache[1] || (_cache[1] = foo)`)
expect(code).toMatchSnapshot()
})
prefixIdentifiers: true
}
)
- expect(code).toMatch(`const _cache = _ctx.$cache`)
expect(code).toMatch(
`
_cache[1] || (
)
expect(code).toMatchInlineSnapshot(`
"
- return function render() {
+ return function render(_ctx, _cache) {
with (this) {
return foo = bar
}
})
expect(ast.helpers).toContain(WITH_SCOPE_ID)
expect(code).toMatch(`const _withId = _withScopeId("test")`)
- expect(code).toMatch(`export const render = _withId(function render() {`)
+ expect(code).toMatch(`export const render = _withId(function render(`)
expect(code).toMatchSnapshot()
})
test('should push scopeId for hoisted nodes', () => {
const { ast, code } = baseCompile(
- `<div><div>hello</div><div>world</div></div>`,
+ `<div><div>hello</div>{{ foo }}<div>world</div></div>`,
{
mode: 'module',
scopeId: 'test',
const _hoisted_1 = _createVNode(\\"div\\", { key: \\"foo\\" })
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
_createVNode(\\"span\\")
])
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
_createCommentVNode(\\"comment\\")
])
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createCommentVNode: _createCommentVNode, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
const _hoisted_1 = _createVNode(\\"span\\")
const _hoisted_2 = _createVNode(\\"div\\")
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
const _hoisted_1 = _createVNode(\\"span\\", { class: \\"inline\\" }, \\"hello\\")
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
const _hoisted_1 = { id: \\"foo\\" }
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, withDirectives: _withDirectives, resolveDirective: _resolveDirective, createBlock: _createBlock, openBlock: _openBlock } = _Vue
const _hoisted_1 = { id: \\"foo\\" }
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { toDisplayString: _toDisplayString, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
const _hoisted_1 = { id: \\"foo\\" }
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { resolveComponent: _resolveComponent, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
const _hoisted_1 = { class: { foo: true } }
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { toDisplayString: _toDisplayString, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
_toDisplayString(true)
])
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { toDisplayString: _toDisplayString, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
const _hoisted_1 = _createVNode(\\"span\\", { foo: 0 }, _toDisplayString(1))
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { toDisplayString: _toDisplayString, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: hoistStatic transform prefixIdentifiers should NOT hoist elements with cached handlers 1`] = `
"import { createVNode as _createVNode, createBlock as _createBlock, openBlock as _openBlock } from \\"vue\\"
-export function render() {
- const _ctx = this
- const _cache = _ctx.$cache
+export function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"div\\", null, [
_createVNode(\\"div\\", null, [
_createVNode(\\"div\\", {
exports[`compiler: hoistStatic transform prefixIdentifiers should NOT hoist expressions that refer scope variables (2) 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, toDisplayString: _toDisplayString, createVNode: _createVNode } = _Vue
exports[`compiler: hoistStatic transform prefixIdentifiers should NOT hoist expressions that refer scope variables (v-slot) 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: hoistStatic transform prefixIdentifiers should NOT hoist expressions that refer scope variables 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, toDisplayString: _toDisplayString, createVNode: _createVNode } = _Vue
exports[`compiler: hoistStatic transform should NOT hoist components 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { resolveComponent: _resolveComponent, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: hoistStatic transform should NOT hoist element with dynamic key 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: hoistStatic transform should NOT hoist element with dynamic props 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: hoistStatic transform should NOT hoist element with dynamic ref 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: hoistStatic transform should NOT hoist root node 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
const _hoisted_1 = { id: \\"foo\\" }
const _hoisted_2 = _createVNode(\\"span\\")
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
}
const _hoisted_2 = _createVNode(\\"span\\")
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock, createCommentVNode: _createCommentVNode } = _Vue
exports[`compiler: transform text <template v-for> 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createTextVNode: _createTextVNode } = _Vue
exports[`compiler: transform text consecutive text 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { toDisplayString: _toDisplayString } = _Vue
exports[`compiler: transform text consecutive text between elements 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, toDisplayString: _toDisplayString, createTextVNode: _createTextVNode, createBlock: _createBlock, Fragment: _Fragment, openBlock: _openBlock } = _Vue
exports[`compiler: transform text consecutive text mixed with elements 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, toDisplayString: _toDisplayString, createTextVNode: _createTextVNode, createBlock: _createBlock, Fragment: _Fragment, openBlock: _openBlock } = _Vue
exports[`compiler: transform text no consecutive text 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { toDisplayString: _toDisplayString } = _Vue
exports[`compiler: transform text text between elements (static) 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createTextVNode: _createTextVNode, createBlock: _createBlock, Fragment: _Fragment, openBlock: _openBlock } = _Vue
exports[`compiler: transform text with prefixIdentifiers: true 1`] = `
"const { toDisplayString: _toDisplayString } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
return _toDisplayString(_ctx.foo) + \\" bar \\" + _toDisplayString(_ctx.baz + _ctx.qux)
}"
`;
exports[`compiler: v-for codegen basic v-for 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
exports[`compiler: v-for codegen keyed template v-for 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
exports[`compiler: v-for codegen keyed v-for 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
exports[`compiler: v-for codegen skipped key 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
exports[`compiler: v-for codegen skipped value & key 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
exports[`compiler: v-for codegen skipped value 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
exports[`compiler: v-for codegen template v-for 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
exports[`compiler: v-for codegen template v-for w/ <slot/> 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, renderSlot: _renderSlot } = _Vue
exports[`compiler: v-for codegen v-for on <slot/> 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, renderSlot: _renderSlot } = _Vue
exports[`compiler: v-for codegen v-for on element with custom directive 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode, withDirectives: _withDirectives, resolveDirective: _resolveDirective } = _Vue
exports[`compiler: v-for codegen v-if + v-for 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode, createCommentVNode: _createCommentVNode } = _Vue
exports[`compiler: v-for codegen value + key + index 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode } = _Vue
exports[`compiler: v-if codegen basic v-if 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock, createCommentVNode: _createCommentVNode } = _Vue
exports[`compiler: v-if codegen template v-if 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, openBlock: _openBlock, Fragment: _Fragment, createBlock: _createBlock, createCommentVNode: _createCommentVNode } = _Vue
exports[`compiler: v-if codegen template v-if w/ single <slot/> child 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderSlot: _renderSlot, openBlock: _openBlock, createCommentVNode: _createCommentVNode } = _Vue
exports[`compiler: v-if codegen v-if + v-else 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock, createCommentVNode: _createCommentVNode } = _Vue
exports[`compiler: v-if codegen v-if + v-else-if + v-else 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock, createCommentVNode: _createCommentVNode, Fragment: _Fragment } = _Vue
exports[`compiler: v-if codegen v-if + v-else-if 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock, createCommentVNode: _createCommentVNode } = _Vue
exports[`compiler: v-if codegen v-if on <slot/> 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { renderSlot: _renderSlot, openBlock: _openBlock, createCommentVNode: _createCommentVNode } = _Vue
exports[`compiler: v-if codegen v-if with key 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock, createCommentVNode: _createCommentVNode } = _Vue
exports[`compiler: transform v-model compound expression (with prefixIdentifiers) 1`] = `
"import { createVNode as _createVNode, createBlock as _createBlock, openBlock as _openBlock } from \\"vue\\"
-export function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"input\\", {
modelValue: _ctx.model[_ctx.index],
\\"onUpdate:modelValue\\": $event => (_ctx.model[_ctx.index] = $event)
exports[`compiler: transform v-model compound expression 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model simple exprssion (with prefixIdentifiers) 1`] = `
"import { createVNode as _createVNode, createBlock as _createBlock, openBlock as _openBlock } from \\"vue\\"
-export function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"input\\", {
modelValue: _ctx.model,
\\"onUpdate:modelValue\\": $event => (_ctx.model = $event)
exports[`compiler: transform v-model simple exprssion 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model with argument 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model with dynamic argument (with prefixIdentifiers) 1`] = `
"import { createVNode as _createVNode, createBlock as _createBlock, openBlock as _openBlock } from \\"vue\\"
-export function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"input\\", {
[_ctx.value]: _ctx.model,
[\\"onUpdate:\\" + _ctx.value]: $event => (_ctx.model = $event)
exports[`compiler: transform v-model with dynamic argument 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: v-once transform as root node 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { setBlockTracking: _setBlockTracking, createVNode: _createVNode } = _Vue
- const _cache = $cache
return _cache[1] || (
_setBlockTracking(-1),
exports[`compiler: v-once transform on component 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { setBlockTracking: _setBlockTracking, resolveComponent: _resolveComponent, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
- const _cache = $cache
const _component_Comp = _resolveComponent(\\"Comp\\")
exports[`compiler: v-once transform on nested plain element 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { setBlockTracking: _setBlockTracking, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
- const _cache = $cache
return (_openBlock(), _createBlock(\\"div\\", null, [
_cache[1] || (
exports[`compiler: v-once transform on slot outlet 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { setBlockTracking: _setBlockTracking, renderSlot: _renderSlot, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
- const _cache = $cache
return (_openBlock(), _createBlock(\\"div\\", null, [
_cache[1] || (
exports[`compiler: v-once transform with hoistStatic: true 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { setBlockTracking: _setBlockTracking, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
- const _cache = $cache
return (_openBlock(), _createBlock(\\"div\\", null, [
_cache[1] || (
exports[`compiler: transform component slots dynamically named slots 1`] = `
"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
const _component_Comp = _resolveComponent(\\"Comp\\")
return (_openBlock(), _createBlock(_component_Comp, null, {
exports[`compiler: transform component slots implicit default slot 1`] = `
"const { createVNode: _createVNode, resolveComponent: _resolveComponent, createBlock: _createBlock, openBlock: _openBlock } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
const _component_Comp = _resolveComponent(\\"Comp\\")
return (_openBlock(), _createBlock(_component_Comp, null, {
exports[`compiler: transform component slots named slot with v-for w/ prefixIdentifiers: true 1`] = `
"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, renderList: _renderList, createSlots: _createSlots, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
const _component_Comp = _resolveComponent(\\"Comp\\")
return (_openBlock(), _createBlock(_component_Comp, null, _createSlots({ _compiled: true }, [
exports[`compiler: transform component slots named slot with v-if + prefixIdentifiers: true 1`] = `
"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, createSlots: _createSlots, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
const _component_Comp = _resolveComponent(\\"Comp\\")
return (_openBlock(), _createBlock(_component_Comp, null, _createSlots({ _compiled: true }, [
exports[`compiler: transform component slots named slot with v-if + v-else-if + v-else 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { resolveComponent: _resolveComponent, createSlots: _createSlots, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform component slots named slot with v-if 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { resolveComponent: _resolveComponent, createSlots: _createSlots, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform component slots named slots 1`] = `
"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
const _component_Comp = _resolveComponent(\\"Comp\\")
return (_openBlock(), _createBlock(_component_Comp, null, {
exports[`compiler: transform component slots named slots w/ implicit default slot 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, resolveComponent: _resolveComponent, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform component slots nested slots scoping 1`] = `
"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
const _component_Inner = _resolveComponent(\\"Inner\\")
const _component_Comp = _resolveComponent(\\"Comp\\")
exports[`compiler: transform component slots on-component default slot 1`] = `
"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = Vue
-return function render() {
- const _ctx = this
+return function render(_ctx, _cache) {
const _component_Comp = _resolveComponent(\\"Comp\\")
return (_openBlock(), _createBlock(_component_Comp, null, {
push(`const render = _withId(`)
}
if (!ssr) {
- push(`function render() {`)
+ push(`function render(_ctx, _cache) {`)
} else {
push(`function ssrRender(_ctx, _push, _parent) {`)
}
.map(s => `${helperNameMap[s]}: _${helperNameMap[s]}`)
.join(', ')} } = _Vue`
)
- if (ast.cached > 0) {
- newline()
- push(`const _cache = $cache`)
- }
push(`\n`)
newline()
}
- } else if (!__BROWSER__ && !ssr) {
- push(`const _ctx = this`)
- if (ast.cached > 0) {
- newline()
- push(`const _cache = _ctx.$cache`)
- }
- newline()
}
// generate asset resolution statements
const _hoisted_1 = {}
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { createVNode: _createVNode, createBlock: _createBlock, Fragment: _Fragment, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model input w/ dynamic v-bind 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelDynamic: _vModelDynamic, mergeProps: _mergeProps, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model input w/ dynamic v-bind 2`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelDynamic: _vModelDynamic, createVNode: _createVNode, withDirectives: _withDirectives, resolveDirective: _resolveDirective, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model modifiers .lazy 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model modifiers .number 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model modifiers .trim 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model simple expression 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model simple expression for input (checkbox) 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelCheckbox: _vModelCheckbox, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model simple expression for input (dynamic type) 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelDynamic: _vModelDynamic, createVNode: _createVNode, withDirectives: _withDirectives, resolveDirective: _resolveDirective, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model simple expression for input (radio) 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelRadio: _vModelRadio, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model simple expression for input (text) 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model simple expression for select 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelSelect: _vModelSelect, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: transform v-model simple expression for textarea 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`compiler: v-show transform simple expression 1`] = `
"const _Vue = Vue
-return function render() {
+return function render(_ctx, _cache) {
with (this) {
const { vShow: _vShow, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue
exports[`source map 1`] = `
Object {
- "mappings": ";;;;UAAA,cACE,aAA8B;IAAzB,aAAmB,4BAAbA,WAAM",
+ "mappings": ";;;UAAA,cACE,aAA8B;IAAzB,aAAmB,4BAAbA,WAAM",
"names": Array [
"render",
],
const _hoisted_1 = _imports_0 + '#fragment'
-export function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"use\\", { href: _hoisted_1 }))
}"
`;
exports[`compiler sfc: transform asset url support uri is empty 1`] = `
"import { createVNode as _createVNode, createBlock as _createBlock, openBlock as _openBlock } from \\"vue\\"
-export function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return (_openBlock(), _createBlock(\\"use\\", { href: '' }))
}"
`;
import _imports_1 from 'fixtures/logo.png'
-export function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return (_openBlock(), _createBlock(_Fragment, null, [
_createVNode(\\"img\\", { src: _imports_0 }),
_createVNode(\\"img\\", { src: _imports_1 }),
const _hoisted_7 = _imports_0 + ', ' + _imports_0 + '2x, ' + _imports_0 + '3x'
const _hoisted_8 = \\"/logo.png\\" + ', ' + _imports_0 + '2x'
-export function render() {
- const _ctx = this
+export function render(_ctx, _cache) {
return (_openBlock(), _createBlock(_Fragment, null, [
_createVNode(\\"img\\", {
src: \\"./logo.png\\",
expect(result.errors.length).toBe(0)
expect(result.source).toBe(source)
// should expose render fn
- expect(result.code).toMatch(`export function render()`)
+ expect(result.code).toMatch(`export function render(`)
})
test('preprocess pug', () => {
slots,
attrs,
vnodeHooks,
- emit
+ emit,
+ renderCache
} = instance
let result
}
try {
if (vnode.shapeFlag & ShapeFlags.STATEFUL_COMPONENT) {
- result = normalizeVNode(instance.render!.call(withProxy || proxy))
+ result = normalizeVNode(
+ instance.render!.call(withProxy || proxy, proxy, renderCache)
+ )
} else {
// functional
const render = Component as FunctionalComponent