@@ -5708,7 +5708,8 @@ object Types extends TypeUtils {
5708
5708
/** Common supertype of `TypeAlias` and `MatchAlias` */
5709
5709
abstract class AliasingBounds (val alias : Type ) extends TypeBounds (alias, alias) {
5710
5710
5711
- def derivedAlias (alias : Type )(using Context ): AliasingBounds
5711
+ def derivedAlias (alias : Type )(using Context ): AliasingBounds =
5712
+ if alias eq this .alias then this else AliasingBounds (alias)
5712
5713
5713
5714
override def computeHash (bs : Binders ): Int = doHash(bs, alias)
5714
5715
override def hashIsStable : Boolean = alias.hashIsStable
@@ -5730,10 +5731,7 @@ object Types extends TypeUtils {
5730
5731
5731
5732
/** = T
5732
5733
*/
5733
- class TypeAlias (alias : Type ) extends AliasingBounds (alias) {
5734
- def derivedAlias (alias : Type )(using Context ): AliasingBounds =
5735
- if (alias eq this .alias) this else TypeAlias (alias)
5736
- }
5734
+ class TypeAlias (alias : Type ) extends AliasingBounds (alias)
5737
5735
5738
5736
/** = T where `T` is a `MatchType`
5739
5737
*
@@ -5742,10 +5740,7 @@ object Types extends TypeUtils {
5742
5740
* If we assumed full substitutivity, we would have to reject all recursive match
5743
5741
* aliases (or else take the jump and allow full recursive types).
5744
5742
*/
5745
- class MatchAlias (alias : Type ) extends AliasingBounds (alias) {
5746
- def derivedAlias (alias : Type )(using Context ): AliasingBounds =
5747
- if (alias eq this .alias) this else MatchAlias (alias)
5748
- }
5743
+ class MatchAlias (alias : Type ) extends AliasingBounds (alias)
5749
5744
5750
5745
object TypeBounds {
5751
5746
def apply (lo : Type , hi : Type )(using Context ): TypeBounds =
0 commit comments