diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-10-08 19:00:48 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-10-08 23:07:36 -0700 |
commit | 58ba39ce851460c18f2f81341a8c80e0e51d2764 (patch) | |
tree | 3cad6ec64abb2089c32425bd40b2ad3a679bfee2 /test/files | |
parent | 4265ab6345d7e84e36dc1444fdbbba3643b29b35 (diff) | |
download | scala-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')
-rw-r--r-- | test/files/pos/sammy_poly.scala | 1 | ||||
-rw-r--r-- | test/files/run/sammy_java8.flags | 1 | ||||
-rw-r--r-- | test/files/run/sammy_java8.scala | 34 | ||||
-rw-r--r-- | test/files/run/t7398.scala | 2 |
4 files changed, 37 insertions, 1 deletions
diff --git a/test/files/pos/sammy_poly.scala b/test/files/pos/sammy_poly.scala index f03be4f8f5..c629be7166 100644 --- a/test/files/pos/sammy_poly.scala +++ b/test/files/pos/sammy_poly.scala @@ -1,6 +1,7 @@ // test synthesizeSAMFunction where the sam type is not fully defined class T { trait F[T, U] { def apply(x: T): U } + // NOTE: the f(x) desugaring for now assumes the single abstract method is called 'apply' def app[T, U](x: T)(f: F[T, U]): U = f(x) app(1)(x => List(x)) }
\ No newline at end of file diff --git a/test/files/run/sammy_java8.flags b/test/files/run/sammy_java8.flags new file mode 100644 index 0000000000..48fd867160 --- /dev/null +++ b/test/files/run/sammy_java8.flags @@ -0,0 +1 @@ +-Xexperimental 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 = () +} diff --git a/test/files/run/t7398.scala b/test/files/run/t7398.scala index 493c4dcf40..4b46850768 100644 --- a/test/files/run/t7398.scala +++ b/test/files/run/t7398.scala @@ -21,6 +21,6 @@ public interface Iterator<E> { } """ - // We're only checking we can parse it. + // We're only checking we can compile it. def check(source: String, unit: global.CompilationUnit): Unit = () } |