@@ -5286,7 +5286,8 @@ object Types extends TypeUtils {
52865286 /** Common supertype of `TypeAlias` and `MatchAlias` */
52875287 abstract class AliasingBounds (val alias : Type ) extends TypeBounds (alias, alias) {
52885288
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)
52905291
52915292 override def computeHash (bs : Binders ): Int = doHash(bs, alias)
52925293 override def hashIsStable : Boolean = alias.hashIsStable
@@ -5306,10 +5307,7 @@ object Types extends TypeUtils {
53065307
53075308 /** = T
53085309 */
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)
53135311
53145312 /** = T where `T` is a `MatchType`
53155313 *
@@ -5318,10 +5316,7 @@ object Types extends TypeUtils {
53185316 * If we assumed full substitutivity, we would have to reject all recursive match
53195317 * aliases (or else take the jump and allow full recursive types).
53205318 */
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)
53255320
53265321 object TypeBounds {
53275322 def apply (lo : Type , hi : Type )(using Context ): TypeBounds =
0 commit comments