summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/internal/Types.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2012-01-31 12:33:47 +0100
committerMartin Odersky <odersky@gmail.com>2012-01-31 12:33:47 +0100
commite9a70f564a29ec0e2262cc9e6608c990b6b05274 (patch)
treeb64e854a7c4f8e30322d9c08c9b73c54aea43e4f /src/compiler/scala/reflect/internal/Types.scala
parent5cb688172c86d3f34a4149e8280694f64bbf1422 (diff)
downloadscala-e9a70f564a29ec0e2262cc9e6608c990b6b05274.tar.gz
scala-e9a70f564a29ec0e2262cc9e6608c990b6b05274.tar.bz2
scala-e9a70f564a29ec0e2262cc9e6608c990b6b05274.zip
First steps towards erasure of inline classes.
Diffstat (limited to 'src/compiler/scala/reflect/internal/Types.scala')
-rw-r--r--src/compiler/scala/reflect/internal/Types.scala12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/compiler/scala/reflect/internal/Types.scala b/src/compiler/scala/reflect/internal/Types.scala
index bf0017d989..0d25ccf86d 100644
--- a/src/compiler/scala/reflect/internal/Types.scala
+++ b/src/compiler/scala/reflect/internal/Types.scala
@@ -65,6 +65,8 @@ import util.Statistics._
// inst is the instantiation and constr is a list of bounds.
case DeBruijnIndex(level, index)
// for dependent method types: a type referring to a method parameter.
+ case ErasedInlineType(tp)
+ // only used during erasure of inline classes.
*/
trait Types extends api.Types { self: SymbolTable =>
@@ -3067,6 +3069,15 @@ trait Types extends api.Types { self: SymbolTable =>
"De Bruijn "+kind+"("+(pnames mkString ",")+";"+(ptypes mkString ",")+";"+restpe+")"
}
}
+
+ abstract case class ErasedInlineType(sym: Symbol) extends Type
+
+ final class UniqueErasedInlineType(sym: Symbol) extends ErasedInlineType(sym) with UniqueType
+
+ object ErasedInlineType {
+ def apply(sym: Symbol): Type =
+ unique(new UniqueErasedInlineType(sym))
+ }
/** A class representing an as-yet unevaluated type.
*/
@@ -3732,6 +3743,7 @@ trait Types extends api.Types { self: SymbolTable =>
case WildcardType => tp
case NoType => tp
case NoPrefix => tp
+ case ErasedSingleType(sym) => tp
*/
case _ =>
tp