Skip to content

Commit de6fee6

Browse files
committed
Merge branch 'vapor' into edison/fix/vaporWorkWithDefineModel
2 parents b02a306 + 679cbdf commit de6fee6

19 files changed

+891
-53
lines changed

packages/compiler-vapor/__tests__/__snapshots__/compile.spec.ts.snap

+7-3
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,9 @@ export function render(_ctx) {
182182
const n0 = t0()
183183
_delegate(n0, "click", () => _ctx.handleClick)
184184
_renderEffect(() => {
185-
_setText(n0, _ctx.count, "foo", _ctx.count, "foo", _ctx.count)
186-
_setProp(n0, "id", _ctx.count)
185+
const _count = _ctx.count
186+
_setText(n0, _count, "foo", _count, "foo", _count)
187+
_setProp(n0, "id", _count)
187188
})
188189
return n0
189190
}"
@@ -199,7 +200,10 @@ exports[`compile > expression parsing > interpolation 1`] = `
199200
exports[`compile > expression parsing > v-bind 1`] = `
200201
"
201202
const n0 = t0()
202-
_renderEffect(() => _setDynamicProps(n0, [{ [key.value+1]: _unref(foo)[key.value+1]() }], true))
203+
_renderEffect(() => {
204+
const _key = key.value
205+
_setDynamicProps(n0, [{ [_key+1]: _unref(foo)[_key+1]() }], true)
206+
})
203207
return n0
204208
"
205209
`;

packages/compiler-vapor/__tests__/compile.spec.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,10 @@ describe('compile', () => {
193193
},
194194
})
195195
expect(code).matchSnapshot()
196-
expect(code).contains('key.value+1')
196+
expect(code).contains('const _key = key.value')
197+
expect(code).contains('_key+1')
197198
expect(code).contains(
198-
'_setDynamicProps(n0, [{ [key.value+1]: _unref(foo)[key.value+1]() }], true)',
199+
'_setDynamicProps(n0, [{ [_key+1]: _unref(foo)[_key+1]() }], true)',
199200
)
200201
})
201202

packages/compiler-vapor/__tests__/transforms/__snapshots__/transformElement.spec.ts.snap

+58-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
22

3+
exports[`compiler: element transform > component > cache v-on expression with unique handler name 1`] = `
4+
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
5+
6+
export function render(_ctx) {
7+
const _component_Foo = _resolveComponent("Foo")
8+
const _component_Bar = _resolveComponent("Bar")
9+
const _on_bar = $event => (_ctx.handleBar($event))
10+
const n0 = _createComponentWithFallback(_component_Foo, { onBar: () => _on_bar })
11+
const _on_bar1 = () => _ctx.handler
12+
const n1 = _createComponentWithFallback(_component_Bar, { onBar: () => _on_bar1 })
13+
return [n0, n1]
14+
}"
15+
`;
16+
317
exports[`compiler: element transform > component > do not resolve component from non-script-setup bindings 1`] = `
418
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
519
@@ -95,16 +109,6 @@ export function render(_ctx, $props, $emit, $attrs, $slots) {
95109
}"
96110
`;
97111

98-
exports[`compiler: element transform > component > should wrap as function if v-on expression is inline statement 1`] = `
99-
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
100-
101-
export function render(_ctx) {
102-
const _component_Foo = _resolveComponent("Foo")
103-
const n0 = _createComponentWithFallback(_component_Foo, { onBar: () => $event => (_ctx.handleBar($event)) }, null, true)
104-
return n0
105-
}"
106-
`;
107-
108112
exports[`compiler: element transform > component > static props 1`] = `
109113
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
110114
@@ -174,6 +178,28 @@ export function render(_ctx) {
174178
}"
175179
`;
176180

181+
exports[`compiler: element transform > component > v-on expression is a function call 1`] = `
182+
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
183+
184+
export function render(_ctx) {
185+
const _component_Foo = _resolveComponent("Foo")
186+
const _on_bar = $event => (_ctx.handleBar($event))
187+
const n0 = _createComponentWithFallback(_component_Foo, { onBar: () => _on_bar }, null, true)
188+
return n0
189+
}"
190+
`;
191+
192+
exports[`compiler: element transform > component > v-on expression is inline statement 1`] = `
193+
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
194+
195+
export function render(_ctx) {
196+
const _component_Foo = _resolveComponent("Foo")
197+
const _on_bar = () => _ctx.handler
198+
const n0 = _createComponentWithFallback(_component_Foo, { onBar: () => _on_bar }, null, true)
199+
return n0
200+
}"
201+
`;
202+
177203
exports[`compiler: element transform > component > v-on="obj" 1`] = `
178204
"import { resolveComponent as _resolveComponent, toHandlers as _toHandlers, createComponentWithFallback as _createComponentWithFallback } from 'vue';
179205
@@ -186,6 +212,28 @@ export function render(_ctx) {
186212
}"
187213
`;
188214

215+
exports[`compiler: element transform > component dynamic event with once modifier 1`] = `
216+
"import { resolveComponent as _resolveComponent, toHandlerKey as _toHandlerKey, createComponentWithFallback as _createComponentWithFallback } from 'vue';
217+
218+
export function render(_ctx) {
219+
const _component_Foo = _resolveComponent("Foo")
220+
const n0 = _createComponentWithFallback(_component_Foo, { $: [
221+
() => ({ [_toHandlerKey(_ctx.foo) + "Once"]: () => _ctx.bar })
222+
] }, null, true)
223+
return n0
224+
}"
225+
`;
226+
227+
exports[`compiler: element transform > component event with once modifier 1`] = `
228+
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
229+
230+
export function render(_ctx) {
231+
const _component_Foo = _resolveComponent("Foo")
232+
const n0 = _createComponentWithFallback(_component_Foo, { onFooOnce: () => _ctx.bar }, null, true)
233+
return n0
234+
}"
235+
`;
236+
189237
exports[`compiler: element transform > component with dynamic event arguments 1`] = `
190238
"import { resolveComponent as _resolveComponent, toHandlerKey as _toHandlerKey, createComponentWithFallback as _createComponentWithFallback } from 'vue';
191239

packages/compiler-vapor/__tests__/transforms/__snapshots__/vBind.spec.ts.snap

+167-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,153 @@
11
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
22

3+
exports[`cache multiple access > dynamic key bindings with expressions 1`] = `
4+
"import { setDynamicProps as _setDynamicProps, renderEffect as _renderEffect, template as _template } from 'vue';
5+
const t0 = _template("<div></div>", true)
6+
7+
export function render(_ctx) {
8+
const n0 = t0()
9+
_renderEffect(() => {
10+
const _key = _ctx.key
11+
_setDynamicProps(n0, [{ [_key+1]: _ctx.foo[_key+1]() }], true)
12+
})
13+
return n0
14+
}"
15+
`;
16+
17+
exports[`cache multiple access > dynamic property access 1`] = `
18+
"import { setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue';
19+
const t0 = _template("<div></div>", true)
20+
21+
export function render(_ctx) {
22+
const n0 = t0()
23+
_renderEffect(() => {
24+
const _obj = _ctx.obj
25+
_setProp(n0, "id", _obj[1][_ctx.baz] + _obj.bar)
26+
})
27+
return n0
28+
}"
29+
`;
30+
31+
exports[`cache multiple access > function calls with arguments 1`] = `
32+
"import { setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue';
33+
const t0 = _template("<div></div>")
34+
35+
export function render(_ctx) {
36+
const n0 = t0()
37+
const n1 = t0()
38+
const n2 = t0()
39+
_renderEffect(() => {
40+
const _foo = _ctx.foo
41+
const _bar = _ctx.bar
42+
const _foo_bar_baz = _foo[_bar(_ctx.baz)]
43+
44+
_setProp(n0, "id", _foo_bar_baz)
45+
_setProp(n1, "id", _foo_bar_baz)
46+
_setProp(n2, "id", _bar() + _foo)
47+
})
48+
return [n0, n1, n2]
49+
}"
50+
`;
51+
52+
exports[`cache multiple access > not cache variable and member expression with the same name 1`] = `
53+
"import { setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue';
54+
const t0 = _template("<div></div>", true)
55+
56+
export function render(_ctx) {
57+
const n0 = t0()
58+
_renderEffect(() => _setProp(n0, "id", _ctx.bar + _ctx.obj.bar))
59+
return n0
60+
}"
61+
`;
62+
63+
exports[`cache multiple access > object property chain access 1`] = `
64+
"import { setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue';
65+
const t0 = _template("<div></div>")
66+
67+
export function render(_ctx) {
68+
const n0 = t0()
69+
const n1 = t0()
70+
_renderEffect(() => {
71+
const _obj = _ctx.obj
72+
const _obj_foo_baz_obj_bar = _obj['foo']['baz'] + _obj.bar
73+
74+
_setProp(n0, "id", _obj_foo_baz_obj_bar)
75+
_setProp(n1, "id", _obj_foo_baz_obj_bar)
76+
})
77+
return [n0, n1]
78+
}"
79+
`;
80+
81+
exports[`cache multiple access > repeated expression in expressions 1`] = `
82+
"import { setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue';
83+
const t0 = _template("<div></div>")
84+
85+
export function render(_ctx) {
86+
const n0 = t0()
87+
const n1 = t0()
88+
const n2 = t0()
89+
_renderEffect(() => {
90+
const _foo = _ctx.foo
91+
const _foo_bar = _foo + _ctx.bar
92+
93+
_setProp(n0, "id", _foo_bar)
94+
_setProp(n1, "id", _foo_bar)
95+
_setProp(n2, "id", _foo + _foo_bar)
96+
})
97+
return [n0, n1, n2]
98+
}"
99+
`;
100+
101+
exports[`cache multiple access > repeated expressions 1`] = `
102+
"import { setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue';
103+
const t0 = _template("<div></div>")
104+
105+
export function render(_ctx) {
106+
const n0 = t0()
107+
const n1 = t0()
108+
_renderEffect(() => {
109+
const _foo_bar = _ctx.foo + _ctx.bar
110+
111+
_setProp(n0, "id", _foo_bar)
112+
_setProp(n1, "id", _foo_bar)
113+
})
114+
return [n0, n1]
115+
}"
116+
`;
117+
118+
exports[`cache multiple access > repeated variable in expressions 1`] = `
119+
"import { setProp as _setProp, renderEffect as _renderEffect, template as _template } from 'vue';
120+
const t0 = _template("<div></div>")
121+
122+
export function render(_ctx) {
123+
const n0 = t0()
124+
const n1 = t0()
125+
_renderEffect(() => {
126+
const _foo = _ctx.foo
127+
_setProp(n0, "id", _foo + _foo + _ctx.bar)
128+
_setProp(n1, "id", _foo)
129+
})
130+
return [n0, n1]
131+
}"
132+
`;
133+
134+
exports[`cache multiple access > repeated variables 1`] = `
135+
"import { setClass as _setClass, renderEffect as _renderEffect, template as _template } from 'vue';
136+
const t0 = _template("<div></div>")
137+
138+
export function render(_ctx) {
139+
const n0 = t0()
140+
const n1 = t0()
141+
_renderEffect(() => {
142+
const _foo = _ctx.foo
143+
144+
_setClass(n0, _foo)
145+
_setClass(n1, _foo)
146+
})
147+
return [n0, n1]
148+
}"
149+
`;
150+
3151
exports[`compiler v-bind > .attr modifier 1`] = `
4152
"import { setAttr as _setAttr, renderEffect as _renderEffect, template as _template } from 'vue';
5153
const t0 = _template("<div></div>", true)
@@ -305,22 +453,24 @@ export function render(_ctx) {
305453
const n5 = t5()
306454
const n6 = t6()
307455
_renderEffect(() => {
456+
const _width = _ctx.width
457+
const _height = _ctx.height
308458
_setAttr(n0, "spellcheck", _ctx.spellcheck)
309459
_setAttr(n0, "draggable", _ctx.draggable)
310460
_setAttr(n0, "translate", _ctx.translate)
311461
_setAttr(n0, "form", _ctx.form)
312462
_setAttr(n1, "list", _ctx.list)
313463
_setAttr(n2, "type", _ctx.type)
314464
315-
_setAttr(n3, "width", _ctx.width)
316-
_setAttr(n4, "width", _ctx.width)
317-
_setAttr(n5, "width", _ctx.width)
318-
_setAttr(n6, "width", _ctx.width)
465+
_setAttr(n3, "width", _width)
466+
_setAttr(n4, "width", _width)
467+
_setAttr(n5, "width", _width)
468+
_setAttr(n6, "width", _width)
319469
320-
_setAttr(n3, "height", _ctx.height)
321-
_setAttr(n4, "height", _ctx.height)
322-
_setAttr(n5, "height", _ctx.height)
323-
_setAttr(n6, "height", _ctx.height)
470+
_setAttr(n3, "height", _height)
471+
_setAttr(n4, "height", _height)
472+
_setAttr(n5, "height", _height)
473+
_setAttr(n6, "height", _height)
324474
})
325475
return [n0, n1, n2, n3, n4, n5, n6]
326476
}"
@@ -343,7 +493,11 @@ const t0 = _template("<div></div>", true)
343493
344494
export function render(_ctx) {
345495
const n0 = t0()
346-
_renderEffect(() => _setDynamicProps(n0, [{ [_ctx.id]: _ctx.id, [_ctx.title]: _ctx.title }], true))
496+
_renderEffect(() => {
497+
const _id = _ctx.id
498+
const _title = _ctx.title
499+
_setDynamicProps(n0, [{ [_id]: _id, [_title]: _title }], true)
500+
})
347501
return n0
348502
}"
349503
`;
@@ -354,7 +508,10 @@ const t0 = _template("<div></div>", true)
354508
355509
export function render(_ctx) {
356510
const n0 = t0()
357-
_renderEffect(() => _setDynamicProps(n0, [{ [_ctx.id]: _ctx.id, foo: "bar", checked: "" }], true))
511+
_renderEffect(() => {
512+
const _id = _ctx.id
513+
_setDynamicProps(n0, [{ [_id]: _id, foo: "bar", checked: "" }], true)
514+
})
358515
return n0
359516
}"
360517
`;

0 commit comments

Comments
 (0)