aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r--src/dotty/tools/dotc/core/Types.scala8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index e66d86a40..f2b86242d 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -1796,6 +1796,8 @@ object Types {
/** Wildcard type, possibly with bounds */
abstract case class WildcardType(optBounds: Type) extends CachedGroundType {
+ def derivedWildcardType(optBounds: Type)(implicit ctx: Context) =
+ if (optBounds eq this.optBounds) this else WildcardType(optBounds.asInstanceOf[TypeBounds])
override def computeHash = doHash(optBounds)
}
@@ -1891,6 +1893,9 @@ object Types {
case tp @ TypeVar(_) =>
apply(tp.thisInstance)
+ case tp @ WildcardType =>
+ tp.derivedWildcardType(mapOver(tp.optBounds))
+
case _ =>
tp
}
@@ -1989,6 +1994,9 @@ object Types {
case tp: TypeVar =>
foldOver(x, tp.thisInstance)
+ case tp: WildcardType =>
+ foldOver(x, tp.optBounds)
+
case _ => x
}
}