diff options
author | Paul Phillips <paulp@improving.org> | 2011-09-06 02:48:52 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-09-06 02:48:52 +0000 |
commit | 2f4349e8ddcfdbf70dbf9df1a1da97a8514a14a9 (patch) | |
tree | 52d902a8ee38a10c8f15249cc64ed848b52776dc /test/files | |
parent | c4bb14e760671745104707c8eba7a17918366316 (diff) | |
download | scala-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')
-rw-r--r-- | test/files/run/t4794.check | 1 | ||||
-rw-r--r-- | test/files/run/t4794.scala | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/test/files/run/t4794.check b/test/files/run/t4794.check new file mode 100644 index 0000000000..f599e28b8a --- /dev/null +++ b/test/files/run/t4794.check @@ -0,0 +1 @@ +10 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 + } +} |