summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2011-10-13 23:00:38 +0000
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2011-10-13 23:00:38 +0000
commitbca8959a1ab162dadec51c0db7d062315f5e4d6e (patch)
treeaa953aba77b0db388294ebaa6f95df0445f063fc
parent1bd14badd7092596564572c601b47236818363ff (diff)
downloadscala-bca8959a1ab162dadec51c0db7d062315f5e4d6e.tar.gz
scala-bca8959a1ab162dadec51c0db7d062315f5e4d6e.tar.bz2
scala-bca8959a1ab162dadec51c0db7d062315f5e4d6e.zip
Reverted r25823 as it breaks specialization of ...
Reverted r25823 as it breaks specialization of traits.
-rw-r--r--src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala7
-rw-r--r--test/files/pos/t5071.scala18
2 files changed, 1 insertions, 24 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
index 756c05a0c7..0f07ac0641 100644
--- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
+++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
@@ -503,12 +503,7 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
val extraSpecializedMixins = specializedParents(clazz.info.parents.map(applyContext))
if (extraSpecializedMixins.nonEmpty)
debuglog("specializeClass on " + clazz + " founds extra specialized mixins: " + extraSpecializedMixins.mkString(", "))
- // If the class being specialized has a self-type, we have to propagate
- // that information to the specialized subclasses or it vanishes.
- if (clazz.thisSym ne clazz) {
- cls.typeOfThis = applyContext(clazz.typeOfThis)
- log("Rewriting self-type in specialized class: " + clazz.typeOfThis + " => " + cls.typeOfThis)
- }
+
val infoType = ClassInfoType(parents ::: extraSpecializedMixins, decls1, cls)
if (newClassTParams.isEmpty) infoType else PolyType(newClassTParams, infoType)
}
diff --git a/test/files/pos/t5071.scala b/test/files/pos/t5071.scala
deleted file mode 100644
index 44ad6276f2..0000000000
--- a/test/files/pos/t5071.scala
+++ /dev/null
@@ -1,18 +0,0 @@
-// abstract
-trait Foo[@specialized A, Repr] {
- self: Repr =>
-}
-trait Bar[A] extends Foo[A, Object] { }
-class Baz extends Foo[Int, Baz] { }
-
-// concrete
-trait Bippy {
- def f(x: Int) = 5
-}
-trait FooC[@specialized A] {
- self: Bippy =>
-
- f(10)
-}
-
-class BazC extends FooC[Int] with Bippy { }