@@ -3131,9 +3131,9 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
3131
3131
* unique value derives from the class.
3132
3132
*/
3133
3133
case (tp1 : SingletonType , tp2) =>
3134
- ! tp1.derivesFrom(tp2.classSymbol)
3134
+ ! tp1.derivesFrom(tp2.classSymbol, defaultIfUnknown = true )
3135
3135
case (tp1, tp2 : SingletonType ) =>
3136
- ! tp2.derivesFrom(tp1.classSymbol)
3136
+ ! tp2.derivesFrom(tp1.classSymbol, defaultIfUnknown = true )
3137
3137
3138
3138
/* Now both sides are possibly-parameterized class types `p.C[Ts]` and `q.D[Us]`.
3139
3139
*
@@ -3189,7 +3189,7 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
3189
3189
val cls2BaseClassSet = SymDenotations .BaseClassSet (cls2.classDenot.baseClasses)
3190
3190
val commonBaseClasses = cls1.classDenot.baseClasses.filter(cls2BaseClassSet.contains(_))
3191
3191
def isAncestorOfOtherBaseClass (cls : ClassSymbol ): Boolean =
3192
- commonBaseClasses.exists(other => (other ne cls) && other.derivesFrom (cls))
3192
+ commonBaseClasses.exists(other => (other ne cls) && other.mayDeriveFrom (cls))
3193
3193
val result = commonBaseClasses.exists { baseClass =>
3194
3194
! isAncestorOfOtherBaseClass(baseClass) && isBaseTypeWithDisjointArguments(baseClass, innerPending)
3195
3195
}
@@ -3230,7 +3230,7 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
3230
3230
.filter(child => child.exists && child != cls)
3231
3231
3232
3232
def eitherDerivesFromOther (cls1 : Symbol , cls2 : Symbol ): Boolean =
3233
- cls1.derivesFrom (cls2) || cls2.derivesFrom (cls1)
3233
+ cls1.mayDeriveFrom (cls2) || cls2.mayDeriveFrom (cls1)
3234
3234
3235
3235
def smallestNonTraitBase (cls : Symbol ): Symbol =
3236
3236
val classes = if cls.isClass then cls.asClass.baseClasses else cls.info.classSymbols
0 commit comments