From d7e283216a4d6a53aa3f0c837f3412165e5bcba6 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Wed, 6 Feb 2013 22:37:35 +0100 Subject: Disentangled denotation types from their symbols, based on info instead. --- src/dotty/tools/dotc/core/Types.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/dotty/tools/dotc/core/Types.scala') diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala index e17572cde..c04ccd60c 100644 --- a/src/dotty/tools/dotc/core/Types.scala +++ b/src/dotty/tools/dotc/core/Types.scala @@ -589,6 +589,9 @@ object Types { */ trait SingletonType extends TypeProxy + /** A marker trait for types that apply only to type symbols */ + trait TypeType extends Type + // --- NamedTypes ------------------------------------------------------------------ /** A NamedType of the form Prefix # name @@ -964,7 +967,7 @@ object Types { // ------ ClassInfo, Type Bounds ------------------------------------------------------------ - abstract case class ClassInfo(prefix: Type, classd: ClassDenotation) extends CachedGroundType { + abstract case class ClassInfo(prefix: Type, classd: ClassDenotation) extends CachedGroundType with TypeType { /* def typeTemplate(implicit ctx: Context): Type = classd.typeTemplate asSeenFrom (prefix, classd.symbol) @@ -991,7 +994,7 @@ object Types { unique(new CachedClassInfo(prefix, classd)) } - abstract case class TypeBounds(lo: Type, hi: Type) extends CachedProxyType { + abstract case class TypeBounds(lo: Type, hi: Type) extends CachedProxyType with TypeType { override def underlying(implicit ctx: Context): Type = hi def derivedTypeBounds(lo1: Type, hi1: Type)(implicit ctx: Context) = if ((lo1 eq lo) && (hi1 eq hi)) this -- cgit v1.2.3