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 beb867523..4b3dfe2b7 100644 --- a/src/dotty/tools/dotc/core/Types.scala +++ b/src/dotty/tools/dotc/core/Types.scala @@ -1035,6 +1035,8 @@ object Types { /** A trait for proto-types, used as expected types in typer */ trait ProtoType extends Type { def isMatchedBy(tp: Type)(implicit ctx: Context): Boolean + def fold[T](x: T, ta: TypeAccumulator[T]): T + def map(tm: TypeMap): ProtoType } // --- NamedTypes ------------------------------------------------------------------ @@ -2163,6 +2165,9 @@ object Types { case tp @ WildcardType => tp.derivedWildcardType(mapOver(tp.optBounds)) + case tp: ProtoType => + tp.map(this) + case _ => tp } @@ -2299,6 +2304,9 @@ object Types { case tp: WildcardType => this(x, tp.optBounds) + case tp: ProtoType => + tp.fold(x, this) + case _ => x } } |