@@ -3131,9 +3131,9 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
31313131 * unique value derives from the class.
31323132 */
31333133 case (tp1 : SingletonType , tp2) =>
3134- ! tp1.derivesFrom(tp2.classSymbol)
3134+ ! tp1.derivesFrom(tp2.classSymbol, defaultIfUnknown = true )
31353135 case (tp1, tp2 : SingletonType ) =>
3136- ! tp2.derivesFrom(tp1.classSymbol)
3136+ ! tp2.derivesFrom(tp1.classSymbol, defaultIfUnknown = true )
31373137
31383138 /* Now both sides are possibly-parameterized class types `p.C[Ts]` and `q.D[Us]`.
31393139 *
@@ -3189,7 +3189,7 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
31893189 val cls2BaseClassSet = SymDenotations .BaseClassSet (cls2.classDenot.baseClasses)
31903190 val commonBaseClasses = cls1.classDenot.baseClasses.filter(cls2BaseClassSet.contains(_))
31913191 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))
31933193 val result = commonBaseClasses.exists { baseClass =>
31943194 ! isAncestorOfOtherBaseClass(baseClass) && isBaseTypeWithDisjointArguments(baseClass, innerPending)
31953195 }
@@ -3230,7 +3230,7 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
32303230 .filter(child => child.exists && child != cls)
32313231
32323232 def eitherDerivesFromOther (cls1 : Symbol , cls2 : Symbol ): Boolean =
3233- cls1.derivesFrom (cls2) || cls2.derivesFrom (cls1)
3233+ cls1.mayDeriveFrom (cls2) || cls2.mayDeriveFrom (cls1)
32343234
32353235 def smallestNonTraitBase (cls : Symbol ): Symbol =
32363236 val classes = if cls.isClass then cls.asClass.baseClasses else cls.info.classSymbols
0 commit comments