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 | |
parent | cdce02dc1d9c957621165545848c1f7bc358bd6d (diff) | |
download | dotty-25761935463a49376bf4462d89877ccbb823951e.tar.gz dotty-25761935463a49376bf4462d89877ccbb823951e.tar.bz2 dotty-25761935463a49376bf4462d89877ccbb823951e.zip |
Some small polishings in TypeComparer
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/TypeComparer.scala | 9 | ||||
-rw-r--r-- | src/dotty/tools/dotc/typer/Implicits.scala | 2 |
2 files changed, 7 insertions, 4 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)(_ & _), diff --git a/src/dotty/tools/dotc/typer/Implicits.scala b/src/dotty/tools/dotc/typer/Implicits.scala index 93043610e..24d9ebf6d 100644 --- a/src/dotty/tools/dotc/typer/Implicits.scala +++ b/src/dotty/tools/dotc/typer/Implicits.scala @@ -32,7 +32,7 @@ import collection.mutable object Implicits { /** A common base class of contextual implicits and of-type implicits which - * represents as set of implicit references. + * represents a set of implicit references. */ abstract class ImplicitRefs(initctx: Context) { implicit val ctx: Context = |