diff options
Diffstat (limited to 'src/dotty/tools/dotc/core/TypeComparers.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/TypeComparers.scala | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/src/dotty/tools/dotc/core/TypeComparers.scala b/src/dotty/tools/dotc/core/TypeComparers.scala index b5896df21..7320438ed 100644 --- a/src/dotty/tools/dotc/core/TypeComparers.scala +++ b/src/dotty/tools/dotc/core/TypeComparers.scala @@ -55,38 +55,38 @@ object TypeComparers { } } - def firstTry(tp1: Type, tp2: Type): Boolean = tp2 match { - case tp2: NamedType => - tp1 match { - case tp1: NamedType => - val sym1 = tp1.symbol - val sym2 = tp2.symbol - val pre1 = tp1.prefix - val pre2 = tp2.prefix - if (sym1 == sym2) ( - ctx.erasedTypes - || (sym1.owner is Package) - || isSubType(pre1, pre2) - ) else ( - tp1.name == tp2.name && isSubType(pre1, pre2) - || sym2.isClass && { - val base = tp1.baseType(sym2) - (base ne tp1) && isSubType(base, tp2) - } - || thirdTryNamed(tp1, tp2) - ) - case _ => - secondTry(tp1, tp2) - } - case WildcardType | ErrorType => - true - case tp2: PolyParam if constraints contains tp2 => - addConstraint(tp2, TypeBounds.lower(tp1)) - case _ => - secondTry(tp1, tp2) + def firstTry(tp1: Type, tp2: Type): Boolean = /* !!! DEBUG ctx.traceIndented(s"$tp1 <:< $tp2") */ { + tp2 match { + case tp2: NamedType => + tp1 match { + case tp1: NamedType => + val sym1 = tp1.symbol + val sym2 = tp2.symbol + val pre1 = tp1.prefix + val pre2 = tp2.prefix + if (sym1 == sym2) ( + ctx.erasedTypes + || (sym1.owner is Package) + || isSubType(pre1, pre2)) + else ( + tp1.name == tp2.name && isSubType(pre1, pre2) + || sym2.isClass && { + val base = tp1.baseType(sym2) + (base ne tp1) && isSubType(base, tp2) + } + || thirdTryNamed(tp1, tp2)) + case _ => + secondTry(tp1, tp2) + } + case WildcardType | ErrorType => + true + case tp2: PolyParam if constraints contains tp2 => + addConstraint(tp2, TypeBounds.lower(tp1)) + case _ => + secondTry(tp1, tp2) + } } - def secondTry(tp1: Type, tp2: Type): Boolean = tp1 match { case WildcardType | ErrorType => true |