aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TypeComparer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-12-14 17:15:32 +0100
committerMartin Odersky <odersky@gmail.com>2015-12-14 17:15:32 +0100
commit86e35e48bb7916b6c2e35147973d2572a29b93c3 (patch)
tree7217d2c19a211f4c8852cd48ad5005105f2f562c /src/dotty/tools/dotc/core/TypeComparer.scala
parent8103c64854c8024927912fd27ce101e1fbc04470 (diff)
downloaddotty-86e35e48bb7916b6c2e35147973d2572a29b93c3.tar.gz
dotty-86e35e48bb7916b6c2e35147973d2572a29b93c3.tar.bz2
dotty-86e35e48bb7916b6c2e35147973d2572a29b93c3.zip
Use symbolic refs when testing whether a TypeBounds contains a ClassInfo
Without the fix and the later commit that checks types for overriding we get a Ycheck failure in t3452h.scala.
Diffstat (limited to 'src/dotty/tools/dotc/core/TypeComparer.scala')
-rw-r--r--src/dotty/tools/dotc/core/TypeComparer.scala11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/dotty/tools/dotc/core/TypeComparer.scala b/src/dotty/tools/dotc/core/TypeComparer.scala
index 71dede951..163fa4919 100644
--- a/src/dotty/tools/dotc/core/TypeComparer.scala
+++ b/src/dotty/tools/dotc/core/TypeComparer.scala
@@ -434,8 +434,7 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling {
(tp2.variance > 0 && tp1.variance >= 0 || (lo2 eq NothingType) || isSubType(lo2, lo1)) &&
(tp2.variance < 0 && tp1.variance <= 0 || (hi2 eq AnyType) || isSubType(hi1, hi2))
case tp1: ClassInfo =>
- val tt = tp1.typeRef
- isSubType(lo2, tt) && isSubType(tt, hi2)
+ tp2 contains tp1
case _ =>
false
}
@@ -1063,13 +1062,13 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling {
case tp1: TypeBounds =>
tp2 match {
case tp2: TypeBounds => tp1 & tp2
- case tp2: ClassInfo if tp1 contains tp2.typeRef => tp2
+ case tp2: ClassInfo if tp1 contains tp2 => tp2
case _ => mergeConflict(tp1, tp2)
}
case tp1: ClassInfo =>
tp2 match {
case tp2: ClassInfo if tp1.cls eq tp2.cls => tp1.derivedClassInfo(tp1.prefix & tp2.prefix)
- case tp2: TypeBounds if tp2 contains tp1.typeRef => tp1
+ case tp2: TypeBounds if tp2 contains tp1 => tp1
case _ => mergeConflict(tp1, tp2)
}
case tp1 @ MethodType(names1, formals1) =>
@@ -1122,13 +1121,13 @@ class TypeComparer(initctx: Context) extends DotClass with ConstraintHandling {
case tp1: TypeBounds =>
tp2 match {
case tp2: TypeBounds => tp1 | tp2
- case tp2: ClassInfo if tp1 contains tp2.typeRef => tp1
+ case tp2: ClassInfo if tp1 contains tp2 => tp1
case _ => mergeConflict(tp1, tp2)
}
case tp1: ClassInfo =>
tp2 match {
case tp2: ClassInfo if tp1.cls eq tp2.cls => tp1.derivedClassInfo(tp1.prefix | tp2.prefix)
- case tp2: TypeBounds if tp2 contains tp1.typeRef => tp2
+ case tp2: TypeBounds if tp2 contains tp1 => tp2
case _ => mergeConflict(tp1, tp2)
}
case tp1 @ MethodType(names1, formals1) =>