diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-11-25 13:12:03 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-11-26 16:15:46 +0100 |
commit | e2b840b96a16f7d41dc43c3cf6d905e0db568629 (patch) | |
tree | 9d32f3a69a02aedbe2d16a9a1226beb60b3fb658 /src/test | |
parent | 26038aebf1555b582dba35e8bfc3698f126705c5 (diff) | |
download | scala-async-e2b840b96a16f7d41dc43c3cf6d905e0db568629.tar.gz scala-async-e2b840b96a16f7d41dc43c3cf6d905e0db568629.tar.bz2 scala-async-e2b840b96a16f7d41dc43c3cf6d905e0db568629.zip |
Lift local defs and functions.
Any vals referred to in the body of these
must also be lifted.
Fixes #36
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/scala/scala/async/TreeInterrogation.scala | 4 | ||||
-rw-r--r-- | src/test/scala/scala/async/run/nesteddef/NestedDef.scala | 40 |
2 files changed, 41 insertions, 3 deletions
diff --git a/src/test/scala/scala/async/TreeInterrogation.scala b/src/test/scala/scala/async/TreeInterrogation.scala index e3012c7..ca4a309 100644 --- a/src/test/scala/scala/async/TreeInterrogation.scala +++ b/src/test/scala/scala/async/TreeInterrogation.scala @@ -56,9 +56,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._ - | async { - | await(0) match { case _ => 0 } - | } + | 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/nesteddef/NestedDef.scala b/src/test/scala/scala/async/run/nesteddef/NestedDef.scala new file mode 100644 index 0000000..2baef0d --- /dev/null +++ b/src/test/scala/scala/async/run/nesteddef/NestedDef.scala @@ -0,0 +1,40 @@ +package scala.async +package run +package nesteddef + +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import org.junit.Test + +@RunWith(classOf[JUnit4]) +class NestedDef { + + @Test + def nestedDef() { + import AsyncId._ + val result = async { + val a = 0 + val x = await(a) - 1 + val local = 43 + def bar(d: Double) = -d + a + local + def foo(z: Any) = (a.toDouble, bar(x).toDouble, z) + foo(await(2)) + } + result mustBe (0d, 44d, 2) + } + + + @Test + def nestedFunction() { + import AsyncId._ + val result = async { + val a = 0 + val x = await(a) - 1 + val local = 43 + val bar = (d: Double) => -d + a + local + val foo = (z: Any) => (a.toDouble, bar(x).toDouble, z) + foo(await(2)) + } + result mustBe (0d, 44d, 2) + } +} |