summaryrefslogtreecommitdiff
path: root/test/files/run/sammy_java8.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-10-08 19:00:48 -0700
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-10-08 23:07:36 -0700
commit58ba39ce851460c18f2f81341a8c80e0e51d2764 (patch)
tree3cad6ec64abb2089c32425bd40b2ad3a679bfee2 /test/files/run/sammy_java8.scala
parent4265ab6345d7e84e36dc1444fdbbba3643b29b35 (diff)
downloadscala-58ba39ce851460c18f2f81341a8c80e0e51d2764.tar.gz
scala-58ba39ce851460c18f2f81341a8c80e0e51d2764.tar.bz2
scala-58ba39ce851460c18f2f81341a8c80e0e51d2764.zip
Single Abstract Method support: java8 test
Inspired by test/files/run/t7398.scala and sammy_poly. Added some notes to original tests. Elaborating on that note: we don't yet desugar `f(a)` to `f.sam(a)`, like we do for regular functions: `f(a)` becomes `f.apply(a)`. It seems pleasingly symmetrical and is easy to implement, but not sure it's a good idea...
Diffstat (limited to 'test/files/run/sammy_java8.scala')
-rw-r--r--test/files/run/sammy_java8.scala34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/files/run/sammy_java8.scala b/test/files/run/sammy_java8.scala
new file mode 100644
index 0000000000..db9df7f5fe
--- /dev/null
+++ b/test/files/run/sammy_java8.scala
@@ -0,0 +1,34 @@
+import scala.tools.partest._
+
+// java8 version of sammy_poly.scala
+object Test extends CompilerTest {
+ import global._
+
+ override lazy val units: List[CompilationUnit] = {
+ global.settings.Xexperimental.value = true
+
+ // This test itself does not depend on JDK8.
+ javaCompilationUnits(global)(samSource) ++
+ compilationUnits(global)(useSamSource)
+ }
+
+ private def samSource = """
+// trait F[T, U] { def apply(x: T): U }
+public interface F<T, U> {
+ U apply(T t);
+ default void yadayada() {
+ throw new UnsupportedOperationException("yadayada");
+ }
+}
+ """
+
+ private def useSamSource = """
+class T {
+ def app[T, U](x: T)(f: F[T, U]): U = f(x)
+ app(1)(x => List(x))
+}
+ """
+
+ // We're only checking we can compile it.
+ def check(source: String, unit: global.CompilationUnit): Unit = ()
+}