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 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
}
}