diff options
author | Martin Odersky <odersky@gmail.com> | 2014-01-13 10:14:10 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-01-13 10:14:10 +0100 |
commit | 12983c39486b3759028502125944f09d62267e83 (patch) | |
tree | c6773c754326beebd173711e6e0466ca57b5961e /src/dotty/tools/dotc/core/Types.scala | |
parent | 0ce813b1887348c148faa0525f4053227913014e (diff) | |
download | dotty-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.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 } } |