@@ -5692,7 +5692,8 @@ object Types extends TypeUtils {
56925692 /** Common supertype of `TypeAlias` and `MatchAlias` */
56935693 abstract class AliasingBounds (val alias : Type ) extends TypeBounds (alias, alias) {
56945694
5695- def derivedAlias (alias : Type )(using Context ): AliasingBounds
5695+ def derivedAlias (alias : Type )(using Context ): AliasingBounds =
5696+ if alias eq this .alias then this else AliasingBounds (alias)
56965697
56975698 override def computeHash (bs : Binders ): Int = doHash(bs, alias)
56985699 override def hashIsStable : Boolean = alias.hashIsStable
@@ -5714,10 +5715,7 @@ object Types extends TypeUtils {
57145715
57155716 /** = T
57165717 */
5717- class TypeAlias (alias : Type ) extends AliasingBounds (alias) {
5718- def derivedAlias (alias : Type )(using Context ): AliasingBounds =
5719- if (alias eq this .alias) this else TypeAlias (alias)
5720- }
5718+ class TypeAlias (alias : Type ) extends AliasingBounds (alias)
57215719
57225720 /** = T where `T` is a `MatchType`
57235721 *
@@ -5726,10 +5724,7 @@ object Types extends TypeUtils {
57265724 * If we assumed full substitutivity, we would have to reject all recursive match
57275725 * aliases (or else take the jump and allow full recursive types).
57285726 */
5729- class MatchAlias (alias : Type ) extends AliasingBounds (alias) {
5730- def derivedAlias (alias : Type )(using Context ): AliasingBounds =
5731- if (alias eq this .alias) this else MatchAlias (alias)
5732- }
5727+ class MatchAlias (alias : Type ) extends AliasingBounds (alias)
57335728
57345729 object TypeBounds {
57355730 def apply (lo : Type , hi : Type )(using Context ): TypeBounds =
0 commit comments