diff options
author | Martin Odersky <odersky@gmail.com> | 2014-03-26 18:45:03 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-03-29 09:10:10 +0100 |
commit | 6a35e3018081a1a8dd90a3e24200223fdbfdce7f (patch) | |
tree | 9426d5c581a160ba4def17600a11b71ff45db052 /src/dotty/tools/dotc/core/Types.scala | |
parent | 6db08e9457a8bcb093b8c8e79109f7ef419729c2 (diff) | |
download | dotty-6a35e3018081a1a8dd90a3e24200223fdbfdce7f.tar.gz dotty-6a35e3018081a1a8dd90a3e24200223fdbfdce7f.tar.bz2 dotty-6a35e3018081a1a8dd90a3e24200223fdbfdce7f.zip |
Reworked erasure denotation transformer
Now works for all combinations of
java/scala
sue ErasedValueClass/go directly to underlying type
constructors/others
wildcards ok/not
Signatures had to be refined as well, because the signature depends
on whether a type comes form Java or Scala (handling of intersections
is different).
Also, replaced splitArray method in TypeApplication by extractors for
single- and multi-dimensional array types in definitions.
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Types.scala | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala index ce481759b..a7a33ce8e 100644 --- a/src/dotty/tools/dotc/core/Types.scala +++ b/src/dotty/tools/dotc/core/Types.scala @@ -1072,9 +1072,6 @@ object Types { } } - def isType = name.isTypeName - def isTerm = name.isTermName - def symbol(implicit ctx: Context): Symbol = { val now = ctx.period if (checkedPeriod == now || @@ -1084,6 +1081,9 @@ object Types { def info(implicit ctx: Context): Type = denot.info + def isType = isInstanceOf[TypeRef] + def isTerm = isInstanceOf[TermRef] + /** Guard against cycles that can arise if given `op` * follows info. The prblematic cases are a type alias to itself or * bounded by itself or a val typed as itself: @@ -1445,7 +1445,7 @@ object Types { protected def resultSignature(implicit ctx: Context) = resultType match { case rtp: SignedType => rtp.signature - case tp => Signature(tp) + case tp => Signature(tp, isJava = false) } final override def signature(implicit ctx: Context): Signature = { @@ -1496,7 +1496,7 @@ object Types { } protected def computeSignature(implicit ctx: Context): Signature = - paramTypes ++: resultSignature + resultSignature.prepend(paramTypes, isJava) def derivedMethodType(paramNames: List[TermName], paramTypes: List[Type], restpe: Type)(implicit ctx: Context) = if ((paramNames eq this.paramNames) && (paramTypes eq this.paramTypes) && (restpe eq this.resultType)) this |