Skip to content

Commit 61fb892

Browse files
committed
fix: prevent AssignmentExpression
1 parent 7a31002 commit 61fb892

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,14 @@ export function render(_ctx) {
2121
const _setTemplateRef = _createTemplateRefSetter()
2222
const n0 = t0()
2323
let r0
24-
_renderEffect(() => r0 = _setTemplateRef(n0, bar => _ctx.foo = bar, r0))
24+
_renderEffect(() => {
25+
const _foo = _ctx.foo
26+
r0 = _setTemplateRef(n0, bar => {
27+
_foo.value = bar
28+
;({ baz: _ctx.baz } = bar)
29+
console.log(_foo.value, _ctx.baz)
30+
}, r0)
31+
})
2532
return n0
2633
}"
2734
`;

packages/compiler-vapor/__tests__/transforms/transformTemplateRef.spec.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,11 @@ describe('compiler: template ref transform', () => {
8383

8484
test('function ref', () => {
8585
const { ir, code } = compileWithTransformRef(
86-
`<div :ref="bar => foo = bar" />`,
86+
`<div :ref="bar => {
87+
foo.value = bar
88+
;({ baz } = bar)
89+
console.log(foo.value, baz)
90+
}" />`,
8791
)
8892
expect(ir.block.dynamic.children[0]).toMatchObject({
8993
id: 0,
@@ -103,7 +107,6 @@ describe('compiler: template ref transform', () => {
103107
type: IRNodeTypes.SET_TEMPLATE_REF,
104108
element: 0,
105109
value: {
106-
content: 'bar => foo = bar',
107110
isStatic: false,
108111
},
109112
},
@@ -112,7 +115,11 @@ describe('compiler: template ref transform', () => {
112115
])
113116
expect(code).toMatchSnapshot()
114117
expect(code).contains('const _setTemplateRef = _createTemplateRefSetter()')
115-
expect(code).contains('_setTemplateRef(n0, bar => _ctx.foo = bar, r0)')
118+
expect(code).contains(`_setTemplateRef(n0, bar => {
119+
_foo.value = bar
120+
;({ baz: _ctx.baz } = bar)
121+
console.log(_foo.value, _ctx.baz)
122+
}, r0)`)
116123
})
117124

118125
test('ref + v-if', () => {

packages/compiler-vapor/src/generators/expression.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,8 +296,13 @@ function analyzeExpressions(expressions: SimpleExpressionNode[]) {
296296
(variableToExpMap.get(name) || new Set()).add(exp),
297297
)
298298
expToVariableMap.set(exp, (expToVariableMap.get(exp) || []).concat(name))
299-
if (parentStack.some(p => p.type === 'UpdateExpression'))
299+
if (
300+
parentStack.some(
301+
p => p.type === 'UpdateExpression' || p.type === 'AssignmentExpression',
302+
)
303+
) {
300304
updatedVariable.add(name)
305+
}
301306
}
302307

303308
for (const exp of expressions) {

0 commit comments

Comments
 (0)