diff options
author | Martin Odersky <odersky@gmail.com> | 2013-11-27 14:17:12 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-11-27 14:17:12 +0100 |
commit | f8c9dc95929655a198066652cd12109329836198 (patch) | |
tree | 32f8c29e89ad426b7c0d6947cdda44878dc414fe /src/dotty/tools/dotc/core/transform/Erasure.scala | |
parent | f0b4fc58e0c5e5372c23bd817954ed3aa82b2102 (diff) | |
download | dotty-f8c9dc95929655a198066652cd12109329836198.tar.gz dotty-f8c9dc95929655a198066652cd12109329836198.tar.bz2 dotty-f8c9dc95929655a198066652cd12109329836198.zip |
Changed Signatures
Signatures have a different meaning before and after erasure. After erasure, the result type counts also whereas before it doesn't. The new definitions refelect this behavior.
Diffstat (limited to 'src/dotty/tools/dotc/core/transform/Erasure.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/transform/Erasure.scala | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/dotty/tools/dotc/core/transform/Erasure.scala b/src/dotty/tools/dotc/core/transform/Erasure.scala index 03726e4f5..1b86eff68 100644 --- a/src/dotty/tools/dotc/core/transform/Erasure.scala +++ b/src/dotty/tools/dotc/core/transform/Erasure.scala @@ -99,31 +99,31 @@ object Erasure { if (bcs1.isEmpty) defn.ObjectClass else bcs1.head } - /** The parameter signature of a type. - * Need to ensure correspondence with erasure + /** The name of the type as it is used in `Signature`s. + * Need to ensure correspondence with erasure! */ - def paramSignature(tp: Type)(implicit ctx: Context): TypeName = tp match { + def sigName(tp: Type)(implicit ctx: Context): TypeName = tp match { case tp: TypeRef => val sym = tp.symbol if (sym.isClass) /*if (sym.isDerivedValueClass) eraseDerivedValueClassRef(tref) else */if (sym.owner is Package) normalizeClass(sym.asClass).name else sym.asClass.name - else paramSignature(tp.info) + else sigName(tp.info) case tp: RefinedType => val parent = tp.parent if (parent isRef defn.ArrayClass) eraseArray(tp) match { case tp1: RefinedType if tp1.parent isRef defn.ArrayClass => - paramSignature(tp1.refinedInfo) ++ "[]" + sigName(tp1.refinedInfo) ++ "[]" case tp1 => - paramSignature(tp1) + sigName(tp1) } - else paramSignature(parent) + else sigName(parent) case tp: TypeProxy => - paramSignature(tp.underlying) + sigName(tp.underlying) case AndType(tp1, tp2) => - paramSignature(tp1) + sigName(tp1) case OrType(tp1, tp2) => lubClass(tp1, tp2).name case ErrorType => |