aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/TypeErasure.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-12-05 14:45:59 +0100
committerMartin Odersky <odersky@gmail.com>2014-12-05 14:45:59 +0100
commitf6eeb18268fabb86e10c89a9f6b9125663f4ed11 (patch)
tree9992d62567567e268b2363bf9726f654fa0b0d61 /src/dotty/tools/dotc/TypeErasure.scala
parent45fd08763fa9f1a45114ce8cd6125e6a83bf3409 (diff)
downloaddotty-f6eeb18268fabb86e10c89a9f6b9125663f4ed11.tar.gz
dotty-f6eeb18268fabb86e10c89a9f6b9125663f4ed11.tar.bz2
dotty-f6eeb18268fabb86e10c89a9f6b9125663f4ed11.zip
Simplified code a bit
Diffstat (limited to 'src/dotty/tools/dotc/TypeErasure.scala')
-rw-r--r--src/dotty/tools/dotc/TypeErasure.scala18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/dotty/tools/dotc/TypeErasure.scala b/src/dotty/tools/dotc/TypeErasure.scala
index 3f9149214..162c869b4 100644
--- a/src/dotty/tools/dotc/TypeErasure.scala
+++ b/src/dotty/tools/dotc/TypeErasure.scala
@@ -317,19 +317,15 @@ class TypeErasure(isJava: Boolean, isSemi: Boolean, isConstructor: Boolean, wild
if (cls is Package) tp
else {
def eraseTypeRef(p: TypeRef) = this(p).asInstanceOf[TypeRef]
- val parents: List[TypeRef] = {
+ val parents: List[TypeRef] =
if ((cls eq defn.ObjectClass) || cls.isPrimitiveValueClass) Nil
- else {
- def normalize(trs: List[TypeRef])(implicit ctx: Context): List[TypeRef] = trs match {
- case tr :: trs1 =>
- assert(!tr.classSymbol.is(Trait), cls)
- val tr1 = if (cls is Trait) defn.ObjectClass.typeRef else tr
- tr1 :: trs1.filterNot(_ isRef defn.ObjectClass)
- case nil => nil
- }
- normalize(classParents.mapConserve(eraseTypeRef))
+ else classParents.mapConserve(eraseTypeRef) match {
+ case tr :: trs1 =>
+ assert(!tr.classSymbol.is(Trait), cls)
+ val tr1 = if (cls is Trait) defn.ObjectClass.typeRef else tr
+ tr1 :: trs1.filterNot(_ isRef defn.ObjectClass)
+ case nil => nil
}
- }
val erasedDecls = decls.filteredScope(d => !d.isType || d.isClass)
tp.derivedClassInfo(NoPrefix, parents, erasedDecls, erasedRef(tp.selfType))
// can't replace selftype by NoType because this would lose the sourceModule link