aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-03-26 18:45:03 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-03-29 09:10:10 +0100
commit6a35e3018081a1a8dd90a3e24200223fdbfdce7f (patch)
tree9426d5c581a160ba4def17600a11b71ff45db052 /src/dotty/tools/dotc/core/Types.scala
parent6db08e9457a8bcb093b8c8e79109f7ef419729c2 (diff)
downloaddotty-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.scala10
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