summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/Erasure.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2012-02-13 14:27:41 +0100
committerMartin Odersky <odersky@gmail.com>2012-02-14 18:33:37 +0100
commitee560229d1be78294b17ba4b0b6f36e8dd68d376 (patch)
treee779b798c86c36d5db5e5b9da01a8f721ec9a780 /src/compiler/scala/tools/nsc/transform/Erasure.scala
parent087aee792e20ccf339be1a14349b7fbde647d394 (diff)
downloadscala-ee560229d1be78294b17ba4b0b6f36e8dd68d376.tar.gz
scala-ee560229d1be78294b17ba4b0b6f36e8dd68d376.tar.bz2
scala-ee560229d1be78294b17ba4b0b6f36e8dd68d376.zip
Fixing problems with generation of isInstanceOf, classOf.
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/Erasure.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Erasure.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala
index debf2e4b97..7eb819f058 100644
--- a/src/compiler/scala/tools/nsc/transform/Erasure.scala
+++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala
@@ -583,7 +583,7 @@ abstract class Erasure extends AddInterfaces
case Apply(TypeApply(sel @ Select(qual, name), List(targ)), List())
if tree.symbol == Any_isInstanceOf || tree.symbol == Object_asInstanceOf =>
targ.tpe match {
- case ErasedInlineType(clazz) => targ.setType(scalaErasure(clazz.tpe))
+ case ErasedInlineType(clazz) => targ.setType(clazz.tpe)
case _ =>
}
tree
@@ -1065,7 +1065,11 @@ abstract class Erasure extends AddInterfaces
case Literal(ct) if ct.tag == ClassTag
&& ct.typeValue.typeSymbol != definitions.UnitClass =>
- treeCopy.Literal(tree, Constant(erasure(NoSymbol, ct.typeValue)))
+ val erased = ct.typeValue match {
+ case TypeRef(pre, clazz, args) if clazz.isInlineClass => typeRef(pre, clazz, List())
+ case tpe => erasure(NoSymbol, tpe)
+ }
+ treeCopy.Literal(tree, Constant(erased))
case _ =>
tree