diff options
author | Martin Odersky <odersky@gmail.com> | 2013-11-14 18:31:11 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-11-14 18:44:17 +0100 |
commit | 2e1f8ab9eb96a61ec5343a79d3a1d118113d308e (patch) | |
tree | 41a8dfedaeb23373481249bd5d19dd00274ee96c /src/dotty/tools/dotc/core/TypeComparer.scala | |
parent | 7ca40215f51a7a008dd1856b9813eabfd8121d8d (diff) | |
download | dotty-2e1f8ab9eb96a61ec5343a79d3a1d118113d308e.tar.gz dotty-2e1f8ab9eb96a61ec5343a79d3a1d118113d308e.tar.bz2 dotty-2e1f8ab9eb96a61ec5343a79d3a1d118113d308e.zip |
Providing for new match scheme.
See doc comment for Config.newMatch what this is about,
Diffstat (limited to 'src/dotty/tools/dotc/core/TypeComparer.scala')
-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( |