aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TypeComparer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-01-24 18:11:27 +0100
committerMartin Odersky <odersky@gmail.com>2015-01-24 18:11:27 +0100
commit25761935463a49376bf4462d89877ccbb823951e (patch)
tree69e396a45203c7773c48edf894c0de69497d1557 /src/dotty/tools/dotc/core/TypeComparer.scala
parentcdce02dc1d9c957621165545848c1f7bc358bd6d (diff)
downloaddotty-25761935463a49376bf4462d89877ccbb823951e.tar.gz
dotty-25761935463a49376bf4462d89877ccbb823951e.tar.bz2
dotty-25761935463a49376bf4462d89877ccbb823951e.zip
Some small polishings in TypeComparer
Diffstat (limited to 'src/dotty/tools/dotc/core/TypeComparer.scala')
-rw-r--r--src/dotty/tools/dotc/core/TypeComparer.scala9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala
index db6e504d5..6d5d78448 100644
--- a/src/dotty/tools/dotc/core/TypeComparer.scala
+++ b/src/dotty/tools/dotc/core/TypeComparer.scala
@@ -223,13 +223,14 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling wi
}
compareThis
case tp2: SuperType =>
- tp1 match {
+ def compareSuper = tp1 match {
case tp1: SuperType =>
isSubType(tp1.thistpe, tp2.thistpe) &&
isSameType(tp1.supertpe, tp2.supertpe)
case _ =>
secondTry(tp1, tp2)
}
+ compareSuper
case AndType(tp21, tp22) =>
isSubType(tp1, tp21) && isSubType(tp1, tp22)
case ErrorType =>
@@ -934,7 +935,8 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling wi
case tp1 @ MethodType(names1, formals1) =>
tp2 match {
case tp2 @ MethodType(names2, formals2)
- if Config.newMatch && (tp1.isImplicit == tp2.isImplicit) && formals1.hasSameLengthAs(formals2) =>
+ if Config.newMatch && tp1.signature.sameParams(tp2.signature) &&
+ tp1.isImplicit == tp2.isImplicit =>
tp1.derivedMethodType(
mergeNames(names1, names2, nme.syntheticParamName),
(formals1 zipWithConserve formals2)(_ | _),
@@ -999,7 +1001,8 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling wi
case tp1 @ MethodType(names1, formals1) =>
tp2 match {
case tp2 @ MethodType(names2, formals2)
- if Config.newMatch && (tp1.isImplicit == tp2.isImplicit) && formals1.hasSameLengthAs(formals2) =>
+ if Config.newMatch && tp1.signature.sameParams(tp2.signature) &&
+ tp1.isImplicit == tp2.isImplicit =>
tp1.derivedMethodType(
mergeNames(names1, names2, nme.syntheticParamName),
(formals1 zipWithConserve formals2)(_ & _),