@@ -312,7 +312,13 @@ export function transformAST(
312
312
init . type === 'CallExpression' &&
313
313
init . callee . type === 'Identifier'
314
314
if ( isCall && ( refCall = isRefCreationCall ( ( init . callee as any ) . name ) ) ) {
315
- processRefDeclaration ( refCall , decl . id , init , stmt . kind === 'const' )
315
+ processRefDeclaration (
316
+ refCall ,
317
+ decl . id ,
318
+ decl . init ! ,
319
+ init ,
320
+ stmt . kind === 'const'
321
+ )
316
322
} else {
317
323
const isProps =
318
324
isRoot && isCall && ( init . callee as Identifier ) . name === 'defineProps'
@@ -332,6 +338,7 @@ export function transformAST(
332
338
function processRefDeclaration (
333
339
method : string ,
334
340
id : VariableDeclarator [ 'id' ] ,
341
+ init : Node ,
335
342
call : CallExpression ,
336
343
isConst : boolean
337
344
) {
@@ -344,9 +351,9 @@ export function transformAST(
344
351
// single variable
345
352
registerRefBinding ( id , isConst )
346
353
} else if ( id . type === 'ObjectPattern' ) {
347
- processRefObjectPattern ( id , call , isConst )
354
+ processRefObjectPattern ( id , init , isConst )
348
355
} else if ( id . type === 'ArrayPattern' ) {
349
- processRefArrayPattern ( id , call , isConst )
356
+ processRefArrayPattern ( id , init , isConst )
350
357
}
351
358
} else {
352
359
// shorthands
@@ -366,7 +373,7 @@ export function transformAST(
366
373
367
374
function processRefObjectPattern (
368
375
pattern : ObjectPattern ,
369
- call : CallExpression ,
376
+ value : Node ,
370
377
isConst : boolean ,
371
378
tempVar ?: string ,
372
379
path : PathSegment [ ] = [ ]
@@ -402,12 +409,12 @@ export function transformAST(
402
409
// { foo: bar }
403
410
nameId = p . value
404
411
} else if ( p . value . type === 'ObjectPattern' ) {
405
- processRefObjectPattern ( p . value , call , isConst , tempVar , [
412
+ processRefObjectPattern ( p . value , value , isConst , tempVar , [
406
413
...path ,
407
414
key
408
415
] )
409
416
} else if ( p . value . type === 'ArrayPattern' ) {
410
- processRefArrayPattern ( p . value , call , isConst , tempVar , [
417
+ processRefArrayPattern ( p . value , value , isConst , tempVar , [
411
418
...path ,
412
419
key
413
420
] )
@@ -417,12 +424,12 @@ export function transformAST(
417
424
nameId = p . value . left
418
425
defaultValue = p . value . right
419
426
} else if ( p . value . left . type === 'ObjectPattern' ) {
420
- processRefObjectPattern ( p . value . left , call , isConst , tempVar , [
427
+ processRefObjectPattern ( p . value . left , value , isConst , tempVar , [
421
428
...path ,
422
429
[ key , p . value . right ]
423
430
] )
424
431
} else if ( p . value . left . type === 'ArrayPattern' ) {
425
- processRefArrayPattern ( p . value . left , call , isConst , tempVar , [
432
+ processRefArrayPattern ( p . value . left , value , isConst , tempVar , [
426
433
...path ,
427
434
[ key , p . value . right ]
428
435
] )
@@ -446,21 +453,21 @@ export function transformAST(
446
453
: `'${ nameId . name } '`
447
454
const defaultStr = defaultValue ? `, ${ snip ( defaultValue ) } ` : ``
448
455
s . appendLeft (
449
- call . end ! + offset ,
456
+ value . end ! + offset ,
450
457
`,\n ${ nameId . name } = ${ helper (
451
458
'toRef'
452
459
) } (${ source } , ${ keyStr } ${ defaultStr } )`
453
460
)
454
461
}
455
462
}
456
463
if ( nameId ) {
457
- s . appendLeft ( call . end ! + offset , ';' )
464
+ s . appendLeft ( value . end ! + offset , ';' )
458
465
}
459
466
}
460
467
461
468
function processRefArrayPattern (
462
469
pattern : ArrayPattern ,
463
- call : CallExpression ,
470
+ value : Node ,
464
471
isConst : boolean ,
465
472
tempVar ?: string ,
466
473
path : PathSegment [ ] = [ ]
@@ -487,25 +494,25 @@ export function transformAST(
487
494
// [...a]
488
495
error ( `reactivity destructure does not support rest elements.` , e )
489
496
} else if ( e . type === 'ObjectPattern' ) {
490
- processRefObjectPattern ( e , call , isConst , tempVar , [ ...path , i ] )
497
+ processRefObjectPattern ( e , value , isConst , tempVar , [ ...path , i ] )
491
498
} else if ( e . type === 'ArrayPattern' ) {
492
- processRefArrayPattern ( e , call , isConst , tempVar , [ ...path , i ] )
499
+ processRefArrayPattern ( e , value , isConst , tempVar , [ ...path , i ] )
493
500
}
494
501
if ( nameId ) {
495
502
registerRefBinding ( nameId , isConst )
496
503
// inject toRef() after original replaced pattern
497
504
const source = pathToString ( tempVar , path )
498
505
const defaultStr = defaultValue ? `, ${ snip ( defaultValue ) } ` : ``
499
506
s . appendLeft (
500
- call . end ! + offset ,
507
+ value . end ! + offset ,
501
508
`,\n ${ nameId . name } = ${ helper (
502
509
'toRef'
503
510
) } (${ source } , ${ i } ${ defaultStr } )`
504
511
)
505
512
}
506
513
}
507
514
if ( nameId ) {
508
- s . appendLeft ( call . end ! + offset , ';' )
515
+ s . appendLeft ( value . end ! + offset , ';' )
509
516
}
510
517
}
511
518
0 commit comments