@@ -5286,7 +5286,8 @@ object Types extends TypeUtils {
5286
5286
/** Common supertype of `TypeAlias` and `MatchAlias` */
5287
5287
abstract class AliasingBounds (val alias : Type ) extends TypeBounds (alias, alias) {
5288
5288
5289
- def derivedAlias (alias : Type )(using Context ): AliasingBounds
5289
+ def derivedAlias (alias : Type )(using Context ): AliasingBounds =
5290
+ if alias eq this .alias then this else AliasingBounds (alias)
5290
5291
5291
5292
override def computeHash (bs : Binders ): Int = doHash(bs, alias)
5292
5293
override def hashIsStable : Boolean = alias.hashIsStable
@@ -5306,10 +5307,7 @@ object Types extends TypeUtils {
5306
5307
5307
5308
/** = T
5308
5309
*/
5309
- class TypeAlias (alias : Type ) extends AliasingBounds (alias) {
5310
- def derivedAlias (alias : Type )(using Context ): AliasingBounds =
5311
- if (alias eq this .alias) this else TypeAlias (alias)
5312
- }
5310
+ class TypeAlias (alias : Type ) extends AliasingBounds (alias)
5313
5311
5314
5312
/** = T where `T` is a `MatchType`
5315
5313
*
@@ -5318,10 +5316,7 @@ object Types extends TypeUtils {
5318
5316
* If we assumed full substitutivity, we would have to reject all recursive match
5319
5317
* aliases (or else take the jump and allow full recursive types).
5320
5318
*/
5321
- class MatchAlias (alias : Type ) extends AliasingBounds (alias) {
5322
- def derivedAlias (alias : Type )(using Context ): AliasingBounds =
5323
- if (alias eq this .alias) this else MatchAlias (alias)
5324
- }
5319
+ class MatchAlias (alias : Type ) extends AliasingBounds (alias)
5325
5320
5326
5321
object TypeBounds {
5327
5322
def apply (lo : Type , hi : Type )(using Context ): TypeBounds =
0 commit comments