aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/scala/async/TreeInterrogation.scala14
-rw-r--r--src/test/scala/scala/async/neg/LocalClasses0Spec.scala12
-rw-r--r--src/test/scala/scala/async/run/hygiene/Hygiene.scala70
3 files changed, 33 insertions, 63 deletions
diff --git a/src/test/scala/scala/async/TreeInterrogation.scala b/src/test/scala/scala/async/TreeInterrogation.scala
index 14749ca..9a31337 100644
--- a/src/test/scala/scala/async/TreeInterrogation.scala
+++ b/src/test/scala/scala/async/TreeInterrogation.scala
@@ -57,11 +57,21 @@ 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 { val a = 0; val x = await(a) - 1; def foo(z: Any) = (a.toDouble, x.toDouble, z); foo(await(2)) }
+ | 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)
+ | }
+ | ()
| """.stripMargin)
println(tree)
val tree1 = tb.typeCheck(tree.duplicate)
println(cm.universe.show(tree1))
println(tb.eval(tree))
}
-} \ No newline at end of file
+}
diff --git a/src/test/scala/scala/async/neg/LocalClasses0Spec.scala b/src/test/scala/scala/async/neg/LocalClasses0Spec.scala
index 06a0e71..2569303 100644
--- a/src/test/scala/scala/async/neg/LocalClasses0Spec.scala
+++ b/src/test/scala/scala/async/neg/LocalClasses0Spec.scala
@@ -18,7 +18,7 @@ class LocalClasses0Spec {
@Test
def `reject a local class`() {
- expectError("Local class Person illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ expectError("Local case class Person illegal within `async` block") {
"""
| import scala.concurrent.ExecutionContext.Implicits.global
| import scala.async.Async._
@@ -32,7 +32,7 @@ class LocalClasses0Spec {
@Test
def `reject a local class 2`() {
- expectError("Local class Person illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ expectError("Local case class Person illegal within `async` block") {
"""
| import scala.concurrent.{Future, ExecutionContext}
| import ExecutionContext.Implicits.global
@@ -50,7 +50,7 @@ class LocalClasses0Spec {
@Test
def `reject a local class 3`() {
- expectError("Local class Person illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ expectError("Local case class Person illegal within `async` block") {
"""
| import scala.concurrent.{Future, ExecutionContext}
| import ExecutionContext.Implicits.global
@@ -68,7 +68,7 @@ class LocalClasses0Spec {
@Test
def `reject a local class with symbols in its name`() {
- expectError("Local class :: illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ expectError("Local case class :: illegal within `async` block") {
"""
| import scala.concurrent.{Future, ExecutionContext}
| import ExecutionContext.Implicits.global
@@ -86,7 +86,7 @@ class LocalClasses0Spec {
@Test
def `reject a nested local class`() {
- expectError("Local class Person illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ expectError("Local case class Person illegal within `async` block") {
"""
| import scala.concurrent.{Future, ExecutionContext}
| import ExecutionContext.Implicits.global
@@ -110,7 +110,7 @@ class LocalClasses0Spec {
@Test
def `reject a local singleton object`() {
- expectError("Local object Person illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ expectError("Local object Person illegal within `async` block") {
"""
| import scala.concurrent.ExecutionContext.Implicits.global
| import scala.async.Async._
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")
}
}