aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/scala/async/TreeInterrogation.scala
diff options
context:
space:
mode:
authorphaller <hallerp@gmail.com>2012-11-12 15:19:41 +0100
committerphaller <hallerp@gmail.com>2012-11-12 15:19:41 +0100
commit35e62f929df44ff83ed2296352a9db9df889af17 (patch)
tree2c85470d5fdb248157b21551bb537e353662712a /src/test/scala/scala/async/TreeInterrogation.scala
parent386026d6489bd64cc42ac81b76571bf2312d4c42 (diff)
parent7a27951f47635f8badcabfee2f315dd6183ac8ce (diff)
downloadscala-async-35e62f929df44ff83ed2296352a9db9df889af17.tar.gz
scala-async-35e62f929df44ff83ed2296352a9db9df889af17.tar.bz2
scala-async-35e62f929df44ff83ed2296352a9db9df889af17.zip
Fix merge conflicts and tests
Diffstat (limited to 'src/test/scala/scala/async/TreeInterrogation.scala')
-rw-r--r--src/test/scala/scala/async/TreeInterrogation.scala38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/test/scala/scala/async/TreeInterrogation.scala b/src/test/scala/scala/async/TreeInterrogation.scala
new file mode 100644
index 0000000..1293bdf
--- /dev/null
+++ b/src/test/scala/scala/async/TreeInterrogation.scala
@@ -0,0 +1,38 @@
+package scala.async
+
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.junit.Test
+import AsyncId._
+
+@RunWith(classOf[JUnit4])
+class TreeInterrogation {
+ @Test
+ def `a minimal set of vals are lifted to vars`() {
+ val cm = reflect.runtime.currentMirror
+ val tb = mkToolbox("-cp target/scala-2.10/classes")
+ val tree = mkToolbox().parse(
+ """| import _root_.scala.async.AsyncId._
+ | async {
+ | val x = await(1)
+ | val y = x * 2
+ | val z = await(x * 3)
+ | z
+ | }""".stripMargin)
+ val tree1 = tb.typeCheck(tree)
+
+ // println(cm.universe.showRaw(tree1))
+
+ import tb.mirror.universe._
+ val functions = tree1.collect {
+ case f: Function => f
+ }
+ functions.size mustBe 1
+
+ val varDefs = tree1.collect {
+ case ValDef(mods, name, _, _) if mods.hasFlag(Flag.MUTABLE) => name
+ }
+ // TODO no need to lift `y` as it is only accessed from a single state.
+ varDefs.map(_.decoded).toSet mustBe(Set("state$async", "onCompleteHandler$async", "x$1", "z$1", "y$1"))
+ }
+}