refactor(compiler-core): follow up on #276

This commit is contained in:
Evan You
2019-10-15 11:51:52 -04:00
parent 68a3879b88
commit 4cee06ddab
4 changed files with 48 additions and 21 deletions

View File

@@ -173,7 +173,7 @@ exports[`compiler: hoistStatic transform prefixIdentifiers hoist nested static t
"const _Vue = Vue
const _createVNode = Vue.createVNode
const _hoisted_1 = _createVNode(\\"span\\", null, [\\"foo \\", _toString(1), _toString(2)])
const _hoisted_1 = _createVNode(\\"span\\", null, [\\"foo \\", _toString(1), _toString(true)])
return function render() {
with (this) {
@@ -203,7 +203,7 @@ return function render() {
}"
`;
exports[`compiler: hoistStatic transform prefixIdentifiers should NOT hoist expressions that with scope variable (2) 1`] = `
exports[`compiler: hoistStatic transform prefixIdentifiers should NOT hoist expressions that refer scope variables (2) 1`] = `
"const _Vue = Vue
return function render() {
@@ -221,7 +221,24 @@ return function render() {
}"
`;
exports[`compiler: hoistStatic transform prefixIdentifiers should NOT hoist expressions that with scope variable 1`] = `
exports[`compiler: hoistStatic transform prefixIdentifiers should NOT hoist expressions that refer scope variables (v-slot) 1`] = `
"const _Vue = Vue
return function render() {
with (this) {
const { toString: _toString, resolveComponent: _resolveComponent, createVNode: _createVNode, createBlock: _createBlock, openBlock: _openBlock } = _Vue
const _component_Comp = _resolveComponent(\\"Comp\\")
return (_openBlock(), _createBlock(_component_Comp, null, {
default: ({ foo }) => [_toString(_ctx.foo)],
_compiled: true
}))
}
}"
`;
exports[`compiler: hoistStatic transform prefixIdentifiers should NOT hoist expressions that refer scope variables 1`] = `
"const _Vue = Vue
return function render() {

View File

@@ -446,7 +446,7 @@ describe('compiler: hoistStatic transform', () => {
describe('prefixIdentifiers', () => {
test('hoist nested static tree with static interpolation', () => {
const { root, args } = transformWithHoist(
`<div><span>foo {{ 1 }} {{ 2 }}</span></div>`,
`<div><span>foo {{ 1 }} {{ true }}</span></div>`,
{
prefixIdentifiers: true
}
@@ -474,7 +474,7 @@ describe('compiler: hoistStatic transform', () => {
{
type: NodeTypes.INTERPOLATION,
content: {
content: `2`,
content: `true`,
isStatic: false,
isConstant: true
}
@@ -600,7 +600,7 @@ describe('compiler: hoistStatic transform', () => {
expect(generate(root).code).toMatchSnapshot()
})
test('should NOT hoist expressions that with scope variable', () => {
test('should NOT hoist expressions that refer scope variables', () => {
const { root } = transformWithHoist(
`<div><p v-for="o in list"><span>{{ o }}</span></p></div>`,
{
@@ -612,7 +612,7 @@ describe('compiler: hoistStatic transform', () => {
expect(generate(root).code).toMatchSnapshot()
})
test('should NOT hoist expressions that with scope variable (2)', () => {
test('should NOT hoist expressions that refer scope variables (2)', () => {
const { root } = transformWithHoist(
`<div><p v-for="o in list"><span>{{ o + 'foo' }}</span></p></div>`,
{
@@ -623,5 +623,17 @@ describe('compiler: hoistStatic transform', () => {
expect(root.hoists.length).toBe(0)
expect(generate(root).code).toMatchSnapshot()
})
test('should NOT hoist expressions that refer scope variables (v-slot)', () => {
const { root } = transformWithHoist(
`<Comp v-slot="{ foo }">{{ foo }}</Comp>`,
{
prefixIdentifiers: true
}
)
expect(root.hoists.length).toBe(0)
expect(generate(root).code).toMatchSnapshot()
})
})
})