@@ -489,7 +489,7 @@ trait ExprBuilder {
489
489
val stateMemberSymbol = symLookup.stateMachineMember(name.state)
490
490
val stateMemberRef = symLookup.memberRef(name.state)
491
491
val body = Match (stateMemberRef, mkCombinedHandlerCases[T ] ++ initStates.flatMap(_.mkOnCompleteHandler[T ]) ++ List (CaseDef (Ident (nme.WILDCARD ), EmptyTree , Throw (Apply (Select (New (Ident (defn.IllegalStateExceptionClass )), termNames.CONSTRUCTOR ), List ())))))
492
- val body1 = eliminateDeadStates (body)
492
+ val body1 = compactStates (body)
493
493
494
494
maybeTry(
495
495
body1,
@@ -508,14 +508,9 @@ trait ExprBuilder {
508
508
})), EmptyTree )
509
509
}
510
510
511
- // Identify dead states: `case <id> => { state = nextId; (); (); ... }, eliminated, and compact state ids to
512
- // enable emission of a tableswitch.
513
- private def eliminateDeadStates (m : Match ): Tree = {
511
+ private def compactStates (m : Match ): Tree = {
514
512
val stateMemberSymbol = symLookup.stateMachineMember(name.state)
515
- // - remove CaseDef-s for dead states
516
- // - rewrite state transitions to dead states to instead transition to the
517
- // non-dead successor.
518
- val elimDeadStateTransform = new Transformer {
513
+ val compactStateTransform = new Transformer {
519
514
override def transform (tree : Tree ): Tree = tree match {
520
515
case as @ Assign (lhs, Literal (Constant (i : Integer ))) if lhs.symbol == stateMemberSymbol =>
521
516
val replacement = switchIds(i)
@@ -528,7 +523,7 @@ trait ExprBuilder {
528
523
val cases1 = m.cases.flatMap {
529
524
case cd @ CaseDef (Literal (Constant (i : Integer )), EmptyTree , rhs) =>
530
525
val replacement = switchIds(i)
531
- val rhs1 = elimDeadStateTransform .transform(rhs)
526
+ val rhs1 = compactStateTransform .transform(rhs)
532
527
treeCopy.CaseDef (cd, Literal (Constant (replacement)), EmptyTree , rhs1) :: Nil
533
528
case x => x :: Nil
534
529
}
0 commit comments