diff options
author | Martin Odersky <odersky@gmail.com> | 2014-12-05 14:45:59 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-12-05 14:45:59 +0100 |
commit | f6eeb18268fabb86e10c89a9f6b9125663f4ed11 (patch) | |
tree | 9992d62567567e268b2363bf9726f654fa0b0d61 /src/dotty/tools/dotc/TypeErasure.scala | |
parent | 45fd08763fa9f1a45114ce8cd6125e6a83bf3409 (diff) | |
download | dotty-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.scala | 18 |
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 |