diff options
author | phaller <hallerp@gmail.com> | 2012-11-12 15:19:41 +0100 |
---|---|---|
committer | phaller <hallerp@gmail.com> | 2012-11-12 15:19:41 +0100 |
commit | 35e62f929df44ff83ed2296352a9db9df889af17 (patch) | |
tree | 2c85470d5fdb248157b21551bb537e353662712a /src/test/scala/scala/async/TreeInterrogation.scala | |
parent | 386026d6489bd64cc42ac81b76571bf2312d4c42 (diff) | |
parent | 7a27951f47635f8badcabfee2f315dd6183ac8ce (diff) | |
download | scala-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.scala | 38 |
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")) + } +} |