diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/scala/scala/async/TreeInterrogation.scala | 10 | ||||
-rw-r--r-- | src/test/scala/scala/async/run/anf/AnfTransformSpec.scala | 4 | ||||
-rw-r--r-- | src/test/scala/scala/async/run/hygiene/Hygiene.scala | 47 |
3 files changed, 38 insertions, 23 deletions
diff --git a/src/test/scala/scala/async/TreeInterrogation.scala b/src/test/scala/scala/async/TreeInterrogation.scala index 4bdb84d..14749ca 100644 --- a/src/test/scala/scala/async/TreeInterrogation.scala +++ b/src/test/scala/scala/async/TreeInterrogation.scala @@ -57,15 +57,7 @@ object TreeInterrogation extends App { val tb = mkToolbox("-cp target/scala-2.10/classes -Xprint:all") val tree = tb.parse( """ import _root_.scala.async.AsyncId._ - | object Test { - | def blerg = 1 - | def check() { - | async { - | assert(this.blerg == 1) - | assert(this == Test, this.getClass) - | } - | } - | } + | async { val a = 0; val x = await(a) - 1; def foo(z: Any) = (a.toDouble, x.toDouble, z); foo(await(2)) } | """.stripMargin) println(tree) val tree1 = tb.typeCheck(tree.duplicate) diff --git a/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala b/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala index 41eeaa5..6dd4db7 100644 --- a/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala +++ b/src/test/scala/scala/async/run/anf/AnfTransformSpec.scala @@ -24,8 +24,8 @@ class AnfTestClass { } def m(y: Int): Future[Int] = async { - val f = base(y) - await(f) + val blerg = base(y) + await(blerg) } def m2(y: Int): Future[Int] = async { diff --git a/src/test/scala/scala/async/run/hygiene/Hygiene.scala b/src/test/scala/scala/async/run/hygiene/Hygiene.scala index 2aaf515..bb28d5b 100644 --- a/src/test/scala/scala/async/run/hygiene/Hygiene.scala +++ b/src/test/scala/scala/async/run/hygiene/Hygiene.scala @@ -88,16 +88,39 @@ class HygieneSpec { ext mustBe (14) } -// @Test def `this reference is maintained`() { -// object Test { -// def blerg = 1 -// def check() { -// AsyncId.async { -// assert(this.blerg == 1) -// assert(this == Test, this.getClass) -// } -// } -// } -// Test.check() -// } + trait T1 { + def blerg = 0 + } + + object O1 extends T1 { + override def blerg = 1 + + def check() { + val blerg = 3 + AsyncId.async { + assert(this == O1, this.getClass) + assert(this.blerg == 1) + assert(super.blerg == 0) + assert(super[T1].blerg == 0) + } + } + } + + @Test def `this reference is maintained`() { + O1.check() + } + + @Test def `this reference is maintained to local class`() { + object O2 { + def blerg = 2 + + def check() { + AsyncId.async { + assert(this.blerg == 2) + assert(this == O2, this.getClass) + } + } + } + O2.check() + } } |