summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/PostErasure.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2012-02-20 13:49:03 +0100
committerMartin Odersky <odersky@gmail.com>2012-02-20 13:49:03 +0100
commitcae87f6797efa22aef043b4a586456735c1c6c31 (patch)
treea39c29f0c9914067f95b8a74bd7a47918bc00184 /src/compiler/scala/tools/nsc/transform/PostErasure.scala
parent213ca741b0dc43712def6c84603d62b88eac7be7 (diff)
downloadscala-cae87f6797efa22aef043b4a586456735c1c6c31.tar.gz
scala-cae87f6797efa22aef043b4a586456735c1c6c31.tar.bz2
scala-cae87f6797efa22aef043b4a586456735c1c6c31.zip
Renamed "inline class" to "derived value class"
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/PostErasure.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/PostErasure.scala21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/PostErasure.scala b/src/compiler/scala/tools/nsc/transform/PostErasure.scala
index af8de11504..ef158a71f6 100644
--- a/src/compiler/scala/tools/nsc/transform/PostErasure.scala
+++ b/src/compiler/scala/tools/nsc/transform/PostErasure.scala
@@ -1,6 +1,13 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2012 LAMP/EPFL
+ * @author Martin odersky
+ */
package scala.tools.nsc
package transform
+/** This phase maps ErasedValueTypes to the underlying unboxed representation and
+ * performs peephole optimizations.
+ */
trait PostErasure extends InfoTransform with TypingTransformers {
val global: Global
@@ -12,25 +19,25 @@ trait PostErasure extends InfoTransform with TypingTransformers {
def newTransformer(unit: CompilationUnit): Transformer = new PostErasureTransformer(unit)
override def changesBaseClasses = false
- object elimErasedInline extends TypeMap {
+ object elimErasedValueType extends TypeMap {
def apply(tp: Type) = tp match {
- case ErasedInlineType(clazz) => erasure.underlyingOfValueClass(clazz)
+ case ErasedValueType(clazz) => erasure.underlyingOfValueClass(clazz)
case _ => mapOver(tp)
}
}
- def transformInfo(sym: Symbol, tp: Type) = elimErasedInline(tp)
+ def transformInfo(sym: Symbol, tp: Type) = elimErasedValueType(tp)
class PostErasureTransformer(unit: CompilationUnit) extends TypingTransformer(unit) {
override def transform(tree: Tree) =
- super.transform(tree) setType elimErasedInline(tree.tpe) match {
+ super.transform(tree) setType elimErasedValueType(tree.tpe) match {
case // new C(arg).underlying ==> arg
Apply(sel @ Select(
Apply(Select(New(tpt), nme.CONSTRUCTOR), List(arg)),
acc), List())
if atPhase(currentRun.erasurePhase) {
- tpt.tpe.typeSymbol.isInlineClass &&
+ tpt.tpe.typeSymbol.isDerivedValueClass &&
sel.symbol == tpt.tpe.typeSymbol.firstParamAccessor
} =>
if (settings.debug.value) log("Removing "+tree+" -> "+arg)
@@ -41,7 +48,7 @@ trait PostErasure extends InfoTransform with TypingTransformers {
cmp),
List(Apply(Select(New(tpt2), nme.CONSTRUCTOR), List(arg2))))
if atPhase(currentRun.erasurePhase) {
- tpt1.tpe.typeSymbol.isInlineClass &&
+ tpt1.tpe.typeSymbol.isDerivedValueClass &&
(cmp == nme.EQ || cmp == nme.NE) &&
tpt2.tpe.typeSymbol == tpt1.tpe.typeSymbol
} =>
@@ -58,4 +65,4 @@ trait PostErasure extends InfoTransform with TypingTransformers {
tree1
}
}
-} \ No newline at end of file
+}