aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/Erasure.scala
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2015-06-22 20:50:19 +0200
committerGuillaume Martres <smarter@ubuntu.com>2015-06-24 10:28:36 +0200
commit428c6918f948e3b4e1107487a96fafc24c535e4e (patch)
tree76c5d6b8a961e69882b8a0b254766ea60594e680 /src/dotty/tools/dotc/transform/Erasure.scala
parent0fba8757b444d96c748df1e034d39f7626a39d1e (diff)
downloaddotty-428c6918f948e3b4e1107487a96fafc24c535e4e.tar.gz
dotty-428c6918f948e3b4e1107487a96fafc24c535e4e.tar.bz2
dotty-428c6918f948e3b4e1107487a96fafc24c535e4e.zip
TypeErasure#erasure: do not semi-erase types by default
This method can be called from other phases than Erasure, and in most cases we do not want the result to be semi-erased as this is an implementation details of value classes only useful to do type adaptation in the Erasure phase.
Diffstat (limited to 'src/dotty/tools/dotc/transform/Erasure.scala')
-rw-r--r--src/dotty/tools/dotc/transform/Erasure.scala6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/transform/Erasure.scala b/src/dotty/tools/dotc/transform/Erasure.scala
index 962297517..ad261c16b 100644
--- a/src/dotty/tools/dotc/transform/Erasure.scala
+++ b/src/dotty/tools/dotc/transform/Erasure.scala
@@ -268,7 +268,7 @@ object Erasure extends TypeTestsCasts{
class Typer extends typer.ReTyper with NoChecking {
import Boxing._
- def erasedType(tree: untpd.Tree, semiEraseVCs: Boolean = true)(implicit ctx: Context): Type =
+ def erasedType(tree: untpd.Tree, semiEraseVCs: Boolean)(implicit ctx: Context): Type =
tree.typeOpt match {
case tp: TermRef if tree.isTerm => erasedRef(tp)
case tp => erasure(tp, semiEraseVCs)
@@ -296,7 +296,7 @@ object Erasure extends TypeTestsCasts{
/** This override is only needed to semi-erase type ascriptions */
override def typedTyped(tree: untpd.Typed, pt: Type)(implicit ctx: Context): Tree = {
val Typed(expr, tpt) = tree
- val tpt1 = promote(tpt)
+ val tpt1 = promote(tpt, semiEraseVCs = true)
val expr1 = typed(expr, tpt1.tpe)
assignType(untpd.cpy.Typed(tree)(expr1, tpt1), tpt1)
}
@@ -460,7 +460,7 @@ object Erasure extends TypeTestsCasts{
if (pt.isValueType) pt else {
if (tree.typeOpt.derivesFrom(ctx.definitions.UnitClass))
tree.typeOpt
- else erasure(tree.typeOpt)
+ else erasure(tree.typeOpt, semiEraseVCs = true)
}
}