@@ -3922,7 +3922,8 @@ object Types {
3922
3922
}
3923
3923
3924
3924
override protected def derivedRefinedType (tp : RefinedType , parent : Type , info : Type ) =
3925
- parent match {
3925
+ if ((parent eq tp.parent) && (info eq tp.refinedInfo)) tp
3926
+ else parent match {
3926
3927
case Range (parentLo, parentHi) =>
3927
3928
range(derivedRefinedType(tp, parentLo, info), derivedRefinedType(tp, parentHi, info))
3928
3929
case _ =>
@@ -3953,21 +3954,24 @@ object Types {
3953
3954
}
3954
3955
3955
3956
override protected def derivedRecType (tp : RecType , parent : Type ) =
3956
- parent match {
3957
+ if (parent eq tp.parent) tp
3958
+ else parent match {
3957
3959
case Range (lo, hi) => range(tp.rebind(lo), tp.rebind(hi))
3958
3960
case _ => tp.rebind(parent)
3959
3961
}
3960
3962
3961
3963
override protected def derivedTypeAlias (tp : TypeAlias , alias : Type ) =
3962
- alias match {
3964
+ if (alias eq tp.alias) tp
3965
+ else alias match {
3963
3966
case Range (lo, hi) =>
3964
3967
if (variance > 0 ) TypeBounds (lo, hi)
3965
3968
else range(TypeAlias (lo), TypeAlias (hi))
3966
3969
case _ => tp.derivedTypeAlias(alias)
3967
3970
}
3968
3971
3969
3972
override protected def derivedTypeBounds (tp : TypeBounds , lo : Type , hi : Type ) =
3970
- if (isRange(lo) || isRange(hi))
3973
+ if ((lo eq tp.lo) && (hi eq tp.hi)) tp
3974
+ else if (isRange(lo) || isRange(hi))
3971
3975
if (variance > 0 ) TypeBounds (lower(lo), upper(hi))
3972
3976
else range(TypeBounds (upper(lo), lower(hi)), TypeBounds (lower(lo), upper(hi)))
3973
3977
else tp.derivedTypeBounds(lo, hi)
0 commit comments