@@ -491,7 +491,7 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
491
491
// under -Ycheck. Test case is i7965.scala.
492
492
493
493
case CapturingType (parent1, refs1, _) =>
494
- if refs1. subCaptures(tp2.captureSet, frozenConstraint) == CaptureSet .CompareResult .OK then
494
+ if subCaptures(refs1, tp2.captureSet, frozenConstraint) == CaptureSet .CompareResult .OK then
495
495
recur(parent1, tp2)
496
496
else
497
497
thirdTry
@@ -2396,7 +2396,7 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
2396
2396
case tp1 : TypeVar if tp1.isInstantiated =>
2397
2397
tp1.underlying & tp2
2398
2398
case CapturingType (parent1, refs1, _) =>
2399
- if tp2.captureSet.subCaptures( refs1, frozenConstraint) == CaptureSet .CompareResult .OK then
2399
+ if subCaptures( tp2.captureSet, refs1, frozenConstraint) == CaptureSet .CompareResult .OK then
2400
2400
parent1 & tp2
2401
2401
else
2402
2402
tp1.derivedCapturingType(parent1 & tp2, refs1)
@@ -2462,6 +2462,9 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
2462
2462
false
2463
2463
}
2464
2464
2465
+ protected def subCaptures (refs1 : CaptureSet , refs2 : CaptureSet , frozen : Boolean )(using Context ): CaptureSet .CompareResult .Type =
2466
+ refs1.subCaptures(refs2, frozen)
2467
+
2465
2468
// ----------- Diagnostics --------------------------------------------------
2466
2469
2467
2470
/** A hook for showing subtype traces. Overridden in ExplainingTypeComparer */
@@ -2730,6 +2733,7 @@ object TypeComparer {
2730
2733
else res match
2731
2734
case ClassInfo (_, cls, _, _, _) => cls.showLocated
2732
2735
case bounds : TypeBounds => i " type bounds [ $bounds] "
2736
+ case CaptureSet .CompareResult .OK => " OK"
2733
2737
case res : printing.Showable => res.show
2734
2738
case _ => String .valueOf(res)
2735
2739
@@ -3059,5 +3063,10 @@ class ExplainingTypeComparer(initctx: Context) extends TypeComparer(initctx) {
3059
3063
super .addConstraint(param, bound, fromBelow)
3060
3064
}
3061
3065
3066
+ override def subCaptures (refs1 : CaptureSet , refs2 : CaptureSet , frozen : Boolean )(using Context ): CaptureSet .CompareResult .Type =
3067
+ traceIndented(i " subcaptures $refs1 <:< $refs2 ${if frozen then " frozen" else " " }" ) {
3068
+ super .subCaptures(refs1, refs2, frozen)
3069
+ }
3070
+
3062
3071
def lastTrace (header : String ): String = header + { try b.toString finally b.clear() }
3063
3072
}
0 commit comments