aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/internal/ExprBuilder.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/scala/async/internal/ExprBuilder.scala')
-rw-r--r--src/main/scala/scala/async/internal/ExprBuilder.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/main/scala/scala/async/internal/ExprBuilder.scala b/src/main/scala/scala/async/internal/ExprBuilder.scala
index 85e0953..b0cd914 100644
--- a/src/main/scala/scala/async/internal/ExprBuilder.scala
+++ b/src/main/scala/scala/async/internal/ExprBuilder.scala
@@ -127,7 +127,11 @@ trait ExprBuilder {
private var nextJumpState: Option[Int] = None
def +=(stat: Tree): this.type = {
- assert(nextJumpState.isEmpty, s"statement appeared after a label jump: $stat")
+ stat match {
+ case Literal(Constant(())) => // This case occurs in do/while
+ case _ =>
+ assert(nextJumpState.isEmpty, s"statement appeared after a label jump: $stat")
+ }
def addStat() = stats += stat
stat match {
case Apply(fun, Nil) =>
@@ -228,7 +232,7 @@ trait ExprBuilder {
currState = afterAwaitState
stateBuilder = new AsyncStateBuilder(currState, symLookup)
- case If(cond, thenp, elsep) if stat exists isAwait =>
+ case If(cond, thenp, elsep) if (stat exists isAwait) || containsForiegnLabelJump(stat) =>
checkForUnsupportedAwait(cond)
val thenStartState = nextState()