@@ -169,14 +169,15 @@ export default function dom(
169
169
scope = scope . parent ;
170
170
}
171
171
172
- if ( node . type === 'AssignmentExpression' ) {
172
+ if ( node . type === 'AssignmentExpression' || node . type === 'UpdateExpression' ) {
173
+ const assignee = node . type === 'AssignmentExpression' ? node . left : node . argument ;
173
174
let names = [ ] ;
174
175
175
- if ( node . left . type === 'MemberExpression' ) {
176
- const left_object_name = get_object ( node . left ) . name ;
176
+ if ( assignee . type === 'MemberExpression' ) {
177
+ const left_object_name = get_object ( assignee ) . name ;
177
178
left_object_name && ( names = [ left_object_name ] ) ;
178
179
} else {
179
- names = extract_names ( node . left ) ;
180
+ names = extract_names ( assignee ) ;
180
181
}
181
182
182
183
if ( node . operator === '=' && nodes_match ( node . left , node . right ) ) {
@@ -189,9 +190,10 @@ export default function dom(
189
190
code . overwrite ( node . start , node . end , dirty . map ( n => component . invalidate ( n ) ) . join ( '; ' ) ) ;
190
191
} else {
191
192
const single = (
192
- node . left . type === 'Identifier' &&
193
+ node . type === 'AssignmentExpression' &&
194
+ assignee . type === 'Identifier' &&
193
195
parent . type === 'ExpressionStatement' &&
194
- node . left . name [ 0 ] !== '$'
196
+ assignee . name [ 0 ] !== '$'
195
197
) ;
196
198
197
199
names . forEach ( name => {
@@ -213,18 +215,6 @@ export default function dom(
213
215
}
214
216
}
215
217
216
- else if ( node . type === 'UpdateExpression' ) {
217
- const { name } = get_object ( node . argument ) ;
218
-
219
- if ( scope . find_owner ( name ) !== component . instance_scope ) return ;
220
-
221
- const variable = component . var_lookup . get ( name ) ;
222
- if ( variable && variable . hoistable ) return ;
223
-
224
- pending_assignments . add ( name ) ;
225
- component . has_reactive_assignments = true ;
226
- }
227
-
228
218
if ( pending_assignments . size > 0 ) {
229
219
if ( node . type === 'ArrowFunctionExpression' ) {
230
220
const insert = Array . from ( pending_assignments ) . map ( name => component . invalidate ( name ) ) . join ( '; ' ) ;
0 commit comments