summaryrefslogtreecommitdiff
path: root/src
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 /src
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 'src')
-rw-r--r--src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
index 478e20dde8..825edbe517 100644
--- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
+++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
@@ -346,6 +346,7 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
case ExistentialType(_, res) => specializedTypeVars(res)
case AnnotatedType(_, tp, _) => specializedTypeVars(tp)
case TypeBounds(lo, hi) => specializedTypeVars(List(lo, hi))
+ case RefinedType(parents, _) => parents flatMap specializedTypeVars toSet
case _ => Set()
}