diff options
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Types.scala | 8 |
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 } } |