summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-05-18 21:54:24 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2016-05-18 22:39:56 +0200
commita5fab1f588a6042ca924a78d225e85d0acddf5db (patch)
tree50674b5dafcfe4f1db7828e5cff39aa854631e55 /src/compiler/scala/tools/nsc/transform
parent38ca9dec8807ddce36a988bf13b367f4d6f03b9e (diff)
downloadscala-a5fab1f588a6042ca924a78d225e85d0acddf5db.tar.gz
scala-a5fab1f588a6042ca924a78d225e85d0acddf5db.tar.bz2
scala-a5fab1f588a6042ca924a78d225e85d0acddf5db.zip
SI-9066 fix null.asInstanceOf[Unit]
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Erasure.scala4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala
index 7bfe5a4740..5e903946c1 100644
--- a/src/compiler/scala/tools/nsc/transform/Erasure.scala
+++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala
@@ -1141,6 +1141,10 @@ abstract class Erasure extends AddInterfaces
else {
val tree1 = preErase(tree)
tree1 match {
+ case TypeApply(fun, targs @ List(targ)) if fun.symbol == Any_asInstanceOf && targ.tpe == UnitTpe =>
+ // SI-9066 prevent transforming `o.asInstanceOf[Unit]` to `o.asInstanceOf[BoxedUnit]`.
+ // adaptMember will then replace the call by a reference to BoxedUnit.UNIT.
+ treeCopy.TypeApply(tree1, transform(fun), targs).clearType()
case EmptyTree | TypeTree() =>
tree1 setType specialScalaErasure(tree1.tpe)
case ArrayValue(elemtpt, trees) =>