aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/ExprBuilder.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/scala/async/ExprBuilder.scala')
-rw-r--r--src/main/scala/scala/async/ExprBuilder.scala8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/main/scala/scala/async/ExprBuilder.scala b/src/main/scala/scala/async/ExprBuilder.scala
index 1a3f866..56274ec 100644
--- a/src/main/scala/scala/async/ExprBuilder.scala
+++ b/src/main/scala/scala/async/ExprBuilder.scala
@@ -368,6 +368,14 @@ final class ExprBuilder[C <: Context, FS <: FutureSystem](val c: C, val futureSy
currState = currState + matchBudget
stateBuilder = new builder.AsyncStateBuilder(currState, toRename)
+ case ClassDef(_, name, _, _) =>
+ // do not allow local class definitions, because of SI-5467 (specific to case classes, though)
+ c.error(stat.pos, s"Local class ${name.decoded} illegal within `async` block")
+
+ case ModuleDef(_, name, _) =>
+ // local object definitions lead to spurious type errors (because of resetAllAttrs?)
+ c.error(stat.pos, s"Local object ${name.decoded} illegal within `async` block")
+
case _ =>
checkForUnsupportedAwait(stat)
stateBuilder += stat