aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TypeComparer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-11-14 18:31:11 +0100
committerMartin Odersky <odersky@gmail.com>2013-11-14 18:44:17 +0100
commit2e1f8ab9eb96a61ec5343a79d3a1d118113d308e (patch)
tree41a8dfedaeb23373481249bd5d19dd00274ee96c /src/dotty/tools/dotc/core/TypeComparer.scala
parent7ca40215f51a7a008dd1856b9813eabfd8121d8d (diff)
downloaddotty-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.scala17
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(