summaryrefslogtreecommitdiff
path: root/test/files/run/t4794.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-09-06 02:48:52 +0000
committerPaul Phillips <paulp@improving.org>2011-09-06 02:48:52 +0000
commit2f4349e8ddcfdbf70dbf9df1a1da97a8514a14a9 (patch)
tree52d902a8ee38a10c8f15249cc64ed848b52776dc /test/files/run/t4794.scala
parentc4bb14e760671745104707c8eba7a17918366316 (diff)
downloadscala-2f4349e8ddcfdbf70dbf9df1a1da97a8514a14a9.tar.gz
scala-2f4349e8ddcfdbf70dbf9df1a1da97a8514a14a9.tar.bz2
scala-2f4349e8ddcfdbf70dbf9df1a1da97a8514a14a9.zip
Intersection types made specializable.
Formerly a specializable type parameter would be missed if in an intersection. trait Trait[@specialized T] { def f[T](x: Foo[T] with Bar) = x } Now that is specialized, as it already was in the "Foo[T]" case. Closes SI-4794, no review.
Diffstat (limited to 'test/files/run/t4794.scala')
-rw-r--r--test/files/run/t4794.scala12
1 files changed, 12 insertions, 0 deletions
diff --git a/test/files/run/t4794.scala b/test/files/run/t4794.scala
new file mode 100644
index 0000000000..afe89fa429
--- /dev/null
+++ b/test/files/run/t4794.scala
@@ -0,0 +1,12 @@
+trait Mutable[@specialized A] { def a: A; def a_=(a0: A): Unit }
+trait NotSpecialized { }
+class Arr[@specialized A](val arr: Array[A]) {
+ def bippy(m: Mutable[A]) { m.a = arr(0) }
+ def quux(m: Mutable[A] with NotSpecialized) { m.a = arr(0) }
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ println(classOf[Arr[_]].getMethods filter (_.getName contains "quux") size) // expect 10, not 1
+ }
+}