@@ -489,7 +489,7 @@ trait ExprBuilder {
489489 val stateMemberSymbol = symLookup.stateMachineMember(name.state)
490490 val stateMemberRef = symLookup.memberRef(name.state)
491491 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)
493493
494494 maybeTry(
495495 body1,
@@ -508,14 +508,9 @@ trait ExprBuilder {
508508 })), EmptyTree )
509509 }
510510
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 = {
514512 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 {
519514 override def transform (tree : Tree ): Tree = tree match {
520515 case as @ Assign (lhs, Literal (Constant (i : Integer ))) if lhs.symbol == stateMemberSymbol =>
521516 val replacement = switchIds(i)
@@ -528,7 +523,7 @@ trait ExprBuilder {
528523 val cases1 = m.cases.flatMap {
529524 case cd @ CaseDef (Literal (Constant (i : Integer )), EmptyTree , rhs) =>
530525 val replacement = switchIds(i)
531- val rhs1 = elimDeadStateTransform .transform(rhs)
526+ val rhs1 = compactStateTransform .transform(rhs)
532527 treeCopy.CaseDef (cd, Literal (Constant (replacement)), EmptyTree , rhs1) :: Nil
533528 case x => x :: Nil
534529 }
0 commit comments