aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/scala/async/neg/LocalClasses0Spec.scala
diff options
context:
space:
mode:
authorphaller <philipp.haller@typesafe.com>2012-11-09 14:08:56 +0100
committerphaller <philipp.haller@typesafe.com>2012-11-09 14:08:56 +0100
commit87987b3619f44dba43466a908f1bee1b62c9d24a (patch)
treeb1cf4ea41d6200e1d1ff31830c2f600aecd4288d /src/test/scala/scala/async/neg/LocalClasses0Spec.scala
parentbab1cbc10a4c15cefecda7435ffaf9be51fbe3c4 (diff)
downloadscala-async-87987b3619f44dba43466a908f1bee1b62c9d24a.tar.gz
scala-async-87987b3619f44dba43466a908f1bee1b62c9d24a.tar.bz2
scala-async-87987b3619f44dba43466a908f1bee1b62c9d24a.zip
Reject local classes without crashing
Diffstat (limited to 'src/test/scala/scala/async/neg/LocalClasses0Spec.scala')
-rw-r--r--src/test/scala/scala/async/neg/LocalClasses0Spec.scala83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/test/scala/scala/async/neg/LocalClasses0Spec.scala b/src/test/scala/scala/async/neg/LocalClasses0Spec.scala
new file mode 100644
index 0000000..4bf3ce8
--- /dev/null
+++ b/src/test/scala/scala/async/neg/LocalClasses0Spec.scala
@@ -0,0 +1,83 @@
+package scala.async
+package neg
+
+/**
+ * Copyright (C) 2012 Typesafe Inc. <http://www.typesafe.com>
+ */
+
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import org.junit.Test
+
+@RunWith(classOf[JUnit4])
+class LocalClasses0Spec {
+
+ @Test
+ def `An async block should reject local classes 1`() {
+ expectError("Local class Person illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ """
+ | import scala.async.Async._
+ | async {
+ | case class Person(name: String)
+ | }
+ """.stripMargin
+ }
+ }
+
+ @Test
+ def `An async block should reject local classes 2`() {
+ expectError("Local class Person illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ """
+ | import scala.concurrent.{Future, ExecutionContext}
+ | import ExecutionContext.Implicits.global
+ | import scala.async.Async._
+ | async {
+ | case class Person(name: String)
+ | val fut = Future { 5 }
+ | val x = await(fut)
+ | x
+ | }
+ """.stripMargin
+ }
+ }
+
+ @Test
+ def `An async block should reject local classes 3`() {
+ expectError("Local class Person illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ """
+ | import scala.concurrent.{Future, ExecutionContext}
+ | import ExecutionContext.Implicits.global
+ | import scala.async.Async._
+ | async {
+ | val fut = Future { 5 }
+ | val x = await(fut)
+ | case class Person(name: String)
+ | x
+ | }
+ """.stripMargin
+ }
+ }
+
+ @Test
+ def `An async block should reject a nested local class`() {
+ expectError("Local class Person illegal within `async` block", "-cp target/scala-2.10/classes -deprecation -Xfatal-warnings") {
+ """
+ | import scala.concurrent.{Future, ExecutionContext}
+ | import ExecutionContext.Implicits.global
+ | import scala.async.Async._
+ | async {
+ | val fut = Future { 5 }
+ | val x = 2 + 2
+ | var y = 0
+ | if (x > 0) {
+ | case class Person(name: String)
+ | y = await(fut)
+ | } else {
+ | y = x
+ | }
+ | y
+ | }
+ """.stripMargin
+ }
+ }
+}