aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/scala/async/AnfTransform.scala5
-rw-r--r--src/test/scala/scala/async/run/anf/AnfTransformSpec.scala35
2 files changed, 22 insertions, 18 deletions
diff --git a/src/main/scala/scala/async/AnfTransform.scala b/src/main/scala/scala/async/AnfTransform.scala
index afcf6bd..c5fbfd7 100644
--- a/src/main/scala/scala/async/AnfTransform.scala
+++ b/src/main/scala/scala/async/AnfTransform.scala
@@ -88,6 +88,11 @@ private[async] final case class AnfTransform[C <: Context](c: C) {
if (renamed(tree.symbol)) {
treeCopy.Select(tree, transform(fun), tree.symbol.name)
} else super.transform(tree)
+ case tt: TypeTree =>
+ val tt1 = tt.asInstanceOf[symtab.TypeTree]
+ val orig = tt1.original
+ if (orig != null) tt1.setOriginal(transform(orig.asInstanceOf[Tree]).asInstanceOf[symtab.Tree])
+ super.transform(tt)
case _ => super.transform(tree)
}
}
diff --git a/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala b/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala
index 03db205..41c13e0 100644
--- a/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala
+++ b/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala
@@ -112,24 +112,23 @@ class AnfTransformSpec {
State.result mustBe (14)
}
-// TODO 2.10.1
-// @Test
-// def `inlining block does not produce duplicate definition`() {
-// import scala.async.AsyncId
-//
-// AsyncId.async {
-// val f = 12
-// val x = AsyncId.await(f)
-//
-// {
-// type X = Int
-// val x: X = 42
-// println(x)
-// }
-// type X = Int
-// x: X
-// }
-// }
+ @Test
+ def `inlining block does not produce duplicate definition`() {
+ import scala.async.AsyncId
+
+ AsyncId.async {
+ val f = 12
+ val x = AsyncId.await(f)
+
+ {
+ type X = Int
+ val x: X = 42
+ println(x)
+ }
+ type X = Int
+ x: X
+ }
+ }
@Test
def `inlining block in tail position does not produce duplicate definition`() {