@@ -103,13 +103,6 @@ export function migrate(source) {
103
103
walk ( parsed . instance . content , state , instance_script ) ;
104
104
}
105
105
106
- for ( let labeled_to_remove of state . derived_labeled_statements ) {
107
- state . str . remove (
108
- /** @type {number } */ ( labeled_to_remove . start ) ,
109
- /** @type {number } */ ( labeled_to_remove . end )
110
- ) ;
111
- }
112
-
113
106
state = { ...state , scope : analysis . template . scope } ;
114
107
walk ( parsed . fragment , state , template ) ;
115
108
@@ -477,30 +470,24 @@ const instance_script = {
477
470
478
471
const possible_derived = bindings . every ( ( binding ) =>
479
472
binding . references . every ( ( reference ) => {
480
- const declaration_idx = reference . path . findIndex (
481
- ( el ) => el . type === 'VariableDeclaration'
482
- ) ;
483
- const assignment_idx = reference . path . findIndex (
484
- ( el ) => el . type === 'AssignmentExpression'
485
- ) ;
486
- const update_idx = reference . path . findIndex ( ( el ) => el . type === 'UpdateExpression' ) ;
487
- const labeled_idx = reference . path . findIndex (
473
+ const declaration_idx = reference . path . find ( ( el ) => el . type === 'VariableDeclaration' ) ;
474
+ const assignment_idx = reference . path . find ( ( el ) => el . type === 'AssignmentExpression' ) ;
475
+ const update_idx = reference . path . find ( ( el ) => el . type === 'UpdateExpression' ) ;
476
+ const labeled_idx = reference . path . find (
488
477
( el ) => el . type === 'LabeledStatement' && el . label . name === '$'
489
478
) ;
490
479
491
- if ( assignment_idx !== - 1 && labeled_idx !== - 1 ) {
480
+ if ( assignment_idx && labeled_idx ) {
492
481
if ( assignment_in_labeled ) return false ;
493
- assignment_in_labeled = /** @type {AssignmentExpression } */ (
494
- reference . path [ assignment_idx ]
495
- ) ;
496
- labeled_statement = /** @type {LabeledStatement } */ ( reference . path [ labeled_idx ] ) ;
482
+ assignment_in_labeled = /** @type {AssignmentExpression } */ ( assignment_idx ) ;
483
+ labeled_statement = /** @type {LabeledStatement } */ ( labeled_idx ) ;
497
484
}
498
485
499
486
return (
500
- update_idx === - 1 &&
501
- ( declaration_idx !== - 1 ||
502
- ( labeled_idx !== - 1 && assignment_idx !== - 1 ) ||
503
- ( labeled_idx === - 1 && assignment_idx === - 1 ) )
487
+ ! update_idx &&
488
+ ( declaration_idx ||
489
+ ( labeled_idx && assignment_idx ) ||
490
+ ( ! labeled_idx && ! assignment_idx ) )
504
491
) ;
505
492
} )
506
493
) ;
@@ -529,6 +516,10 @@ const instance_script = {
529
516
)
530
517
. toString ( )
531
518
) ;
519
+ state . str . remove (
520
+ /** @type {number } */ ( labeled_statement . start ) ,
521
+ /** @type {number } */ ( labeled_statement . end )
522
+ ) ;
532
523
state . str . appendRight (
533
524
/** @type {number } */ ( declarator . id . typeAnnotation ?. end ?? declarator . id . end ) ,
534
525
')'
0 commit comments