aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-01-13 10:14:10 +0100
committerMartin Odersky <odersky@gmail.com>2014-01-13 10:14:10 +0100
commit12983c39486b3759028502125944f09d62267e83 (patch)
treec6773c754326beebd173711e6e0466ca57b5961e /src/dotty/tools/dotc/core/Types.scala
parent0ce813b1887348c148faa0525f4053227913014e (diff)
downloaddotty-12983c39486b3759028502125944f09d62267e83.tar.gz
dotty-12983c39486b3759028502125944f09d62267e83.tar.bz2
dotty-12983c39486b3759028502125944f09d62267e83.zip
Extend type maps and type accumulators to prototypes
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
}
}