aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scala/async/internal/TransformUtils.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/scala/async/internal/TransformUtils.scala')
-rw-r--r--src/main/scala/scala/async/internal/TransformUtils.scala21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main/scala/scala/async/internal/TransformUtils.scala b/src/main/scala/scala/async/internal/TransformUtils.scala
index 1720815..848861c 100644
--- a/src/main/scala/scala/async/internal/TransformUtils.scala
+++ b/src/main/scala/scala/async/internal/TransformUtils.scala
@@ -544,6 +544,27 @@ private[async] trait TransformUtils {
result :: Nil
}
}
+
+ def deriveLabelDef(ld: LabelDef, applyToRhs: Tree => Tree): LabelDef = {
+ val rhs2 = applyToRhs(ld.rhs)
+ val ld2 = treeCopy.LabelDef(ld, ld.name, ld.params, rhs2)
+ if (ld eq ld2) ld
+ else {
+ val info2 = ld2.symbol.info match {
+ case MethodType(params, p) => internal.methodType(params, rhs2.tpe)
+ case t => t
+ }
+ internal.setInfo(ld2.symbol, info2)
+ ld2
+ }
+ }
+ object MatchEnd {
+ def unapply(t: Tree): Option[LabelDef] = t match {
+ case ValDef(_, _, _, t) => unapply(t)
+ case ld: LabelDef if ld.name.toString.startsWith("matchEnd") => Some(ld)
+ case _ => None
+ }
+ }
}
case object ContainsAwait