@@ -5692,7 +5692,8 @@ object Types extends TypeUtils {
5692
5692
/** Common supertype of `TypeAlias` and `MatchAlias` */
5693
5693
abstract class AliasingBounds (val alias : Type ) extends TypeBounds (alias, alias) {
5694
5694
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)
5696
5697
5697
5698
override def computeHash (bs : Binders ): Int = doHash(bs, alias)
5698
5699
override def hashIsStable : Boolean = alias.hashIsStable
@@ -5714,10 +5715,7 @@ object Types extends TypeUtils {
5714
5715
5715
5716
/** = T
5716
5717
*/
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)
5721
5719
5722
5720
/** = T where `T` is a `MatchType`
5723
5721
*
@@ -5726,10 +5724,7 @@ object Types extends TypeUtils {
5726
5724
* If we assumed full substitutivity, we would have to reject all recursive match
5727
5725
* aliases (or else take the jump and allow full recursive types).
5728
5726
*/
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)
5733
5728
5734
5729
object TypeBounds {
5735
5730
def apply (lo : Type , hi : Type )(using Context ): TypeBounds =
0 commit comments