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 /src/compiler | |
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 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala | 1 |
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() } |