diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-11-26 14:05:04 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-11-26 16:25:16 +0100 |
commit | be275dcf295f0addf8d41c9a3b4cfe2acaadfaa4 (patch) | |
tree | 70426486df39db37860ab90f15ecb41ff51994c1 /src/test/scala/scala/async/run/hygiene/Hygiene.scala | |
parent | 4da04eee1893ead433a624f6b146d56aca46cb7e (diff) | |
download | scala-async-be275dcf295f0addf8d41c9a3b4cfe2acaadfaa4.tar.gz scala-async-be275dcf295f0addf8d41c9a3b4cfe2acaadfaa4.tar.bz2 scala-async-be275dcf295f0addf8d41c9a3b4cfe2acaadfaa4.zip |
Rewrite the state machine to a class, rather than an object.
To avoid suprises in tree retyping, the instance of this
class is immediately upcase to
StateMachine[Promise[T], ExecContext].
Allow nested non-case classes. These pop up when
we use nested async calls.
Only look for duplicate names in the subtrees
traversed by AsyncTraverser.
Diffstat (limited to 'src/test/scala/scala/async/run/hygiene/Hygiene.scala')
-rw-r--r-- | src/test/scala/scala/async/run/hygiene/Hygiene.scala | 70 |
1 files changed, 15 insertions, 55 deletions
diff --git a/src/test/scala/scala/async/run/hygiene/Hygiene.scala b/src/test/scala/scala/async/run/hygiene/Hygiene.scala index bb28d5b..5306ecc 100644 --- a/src/test/scala/scala/async/run/hygiene/Hygiene.scala +++ b/src/test/scala/scala/async/run/hygiene/Hygiene.scala @@ -30,28 +30,6 @@ class HygieneSpec { res mustBe ((25, "result", "resume")) } -/* TODO: -[error] /Users/phaller/git/async/src/test/scala/scala/async/run/hygiene/Hygiene.scala:52: not found: value tr$1 -[error] val f1 = async { state + 2 } -[error] ^ - @Test - def `is hygenic`() { - val state = 23 - val result: Any = "result" - def resume(): Any = "resume" - val res = async { - val f1 = async { state + 2 } - val x = await(f1) - val y = await(async { result }) - val z = await(async { resume() }) - (x, y, z) - } - res._1 mustBe (25) - res._2 mustBe ("result") - res._3 mustBe ("resume") - } -*/ - @Test def `external var as result of await`() { var ext = 0 @@ -88,39 +66,21 @@ class HygieneSpec { ext mustBe (14) } - 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) - } - } + @Test + def `is hygenic nested`() { + val state = 23 + val result: Any = "result" + def resume(): Any = "resume" + import AsyncId.{await, async} + val res = async { + val f1 = async { state + 2 } + val x = await(f1) + val y = await(async { result }) + val z = await(async { resume() }) + (x, y, z) } - O2.check() + res._1 mustBe (25) + res._2 mustBe ("result") + res._3 mustBe ("resume") } } |