diff options
author | Martin Odersky <odersky@gmail.com> | 2015-01-24 18:11:27 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-01-24 18:11:27 +0100 |
commit | 25761935463a49376bf4462d89877ccbb823951e (patch) | |
tree | 69e396a45203c7773c48edf894c0de69497d1557 /src/dotty/tools/dotc/core/TypeComparer.scala | |
parent | cdce02dc1d9c957621165545848c1f7bc358bd6d (diff) | |
download | dotty-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.scala | 9 |
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)(_ & _), |