diff options
author | Martin Odersky <odersky@gmail.com> | 2014-11-21 15:59:59 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-11-24 14:57:49 +0100 |
commit | f6ebe1ec66220db511d0080f3807c3a0512fc01c (patch) | |
tree | b6917213086a870b17c8c51ae50bc1e7c73253a4 /src | |
parent | 832957339c850a64fb7093f3ed6b19c91c5bdfac (diff) | |
download | dotty-f6ebe1ec66220db511d0080f3807c3a0512fc01c.tar.gz dotty-f6ebe1ec66220db511d0080f3807c3a0512fc01c.tar.bz2 dotty-f6ebe1ec66220db511d0080f3807c3a0512fc01c.zip |
Take off the training wheels for refined type comparisons.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/TypeComparer.scala | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala index 51c6f7271..2140f9bfe 100644 --- a/src/dotty/tools/dotc/core/TypeComparer.scala +++ b/src/dotty/tools/dotc/core/TypeComparer.scala @@ -690,31 +690,14 @@ class TypeComparer(initctx: Context) extends DotClass { def compareRefined: Boolean = tp1.widen match { case tp1 @ RefinedType(parent1, name1) if name1 == name2 && name1.isTypeName => normalizedInfo(tp1) match { - case bounds1 @ TypeBounds(lo1, hi1) => - val fastResult = isSubType(bounds1, tp2.refinedInfo) && { + case bounds1 @ TypeBounds(lo1, hi1) if lo1 eq hi1 => + isSubType(bounds1, tp2.refinedInfo) && { val saved = pendingRefinedBases try { addPendingName(name1, tp1, tp2) isSubType(parent1, parent2) } finally pendingRefinedBases = saved } - if (lo1 eq hi1) fastResult - else { - val slowResult = compareRefinedSlow - if (fastResult != slowResult) { - println(i"!!! difference for $tp1 <: $tp2, fast = $fastResult, ${memberMatches(tp1.member(name1))}, slow = $slowResult ${lo1.getClass} ${hi1.getClass}") - println(TypeComparer.explained(implicit ctx => tp1 <:< parent2)) - val tp1r = rebaseQual(tp1, name1) - println(s"rebased = $tp1r / ${narrowRefined(tp1r)}") - val mbr = narrowRefined(tp1r) member name1 - println(i"member = $mbr : ${mbr.info} / ${mbr.getClass}") - val mbr2 = (tp1r) member name1 - println(i"member = $mbr2 : ${mbr2.info} / ${mbr2.getClass}") - println(TypeComparer.explained(implicit ctx => mbr.info <:< tp2.refinedInfo)) - compareRefinedSlow - } - slowResult - } case _ => compareRefinedSlow } |