diff options
-rw-r--r-- | src/dotty/tools/dotc/core/TypeComparer.scala | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala index 42ecb7a2a..8e0b1d01c 100644 --- a/src/dotty/tools/dotc/core/TypeComparer.scala +++ b/src/dotty/tools/dotc/core/TypeComparer.scala @@ -8,6 +8,7 @@ import StdNames.{nme, tpnme} import collection.mutable import printing.Disambiguation.disambiguated import util.SimpleMap +import config.Config /** Provides methods to compare types. * @param constraint The initial constraint which is assumed to hold for the comparisons. @@ -309,8 +310,8 @@ class TypeComparer(initctx: Context) extends DotClass { tp1 match { case tp1 @ MethodType(_, formals2) => tp1.signature == tp2.signature && - /*(if (newMatch) subsumeParams(formals1, formals2, tp1.isJava, tp2.isJava) - else */matchingParams(formals1, formals2, tp1.isJava, tp2.isJava) && + (if (Config.newMatch) subsumeParams(formals1, formals2, tp1.isJava, tp2.isJava) + else matchingParams(formals1, formals2, tp1.isJava, tp2.isJava)) && tp1.isImplicit == tp2.isImplicit && // needed? isSubType(tp1.resultType, tp2.resultType.subst(tp2, tp1)) case _ => @@ -674,13 +675,13 @@ class TypeComparer(initctx: Context) extends DotClass { } case tp1 @ MethodType(names1, formals1) => tp2 match { -/* case tp2 @ MethodType(names2, formals2) - if newMatch && (tp1.isImplicit == tp2.isImplicit) && formals1.hasSameLengthAs(formals2) => + case tp2 @ MethodType(names2, formals2) + if Config.newMatch && (tp1.isImplicit == tp2.isImplicit) && formals1.hasSameLengthAs(formals2) => tp1.derivedMethodType( mergeNames(names1, names2, nme.syntheticParamName), (formals1 zipWithConserve formals2)(_ | _), tp1.resultType & tp2.resultType.subst(tp2, tp1)) -*/ case tp2 @ MethodType(names2, formals2) + case tp2 @ MethodType(names2, formals2) if matchingParams(formals1, formals2, tp1.isJava, tp2.isJava) && tp1.isImplicit == tp2.isImplicit => tp1.derivedMethodType( @@ -748,13 +749,13 @@ class TypeComparer(initctx: Context) extends DotClass { } case tp1 @ MethodType(names1, formals1) => tp2 match { -/* case tp2 @ MethodType(names2, formals2) - if newMatch && (tp1.isImplicit == tp2.isImplicit) && formals1.hasSameLengthAs(formals2) => + case tp2 @ MethodType(names2, formals2) + if Config.newMatch && (tp1.isImplicit == tp2.isImplicit) && formals1.hasSameLengthAs(formals2) => tp1.derivedMethodType( mergeNames(names1, names2, nme.syntheticParamName), (formals1 zipWithConserve formals2)(_ & _), tp1.resultType | tp2.resultType.subst(tp2, tp1)) -*/ case tp2 @ MethodType(names2, formals2) + case tp2 @ MethodType(names2, formals2) if matchingParams(formals1, formals2, tp1.isJava, tp2.isJava) && tp1.isImplicit == tp2.isImplicit => tp1.derivedMethodType( |