diff options
author | Lukas Rytz <lukas.rytz@gmail.com> | 2016-05-18 21:54:24 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@gmail.com> | 2016-05-18 22:39:56 +0200 |
commit | a5fab1f588a6042ca924a78d225e85d0acddf5db (patch) | |
tree | 50674b5dafcfe4f1db7828e5cff39aa854631e55 /src/compiler | |
parent | 38ca9dec8807ddce36a988bf13b367f4d6f03b9e (diff) | |
download | scala-a5fab1f588a6042ca924a78d225e85d0acddf5db.tar.gz scala-a5fab1f588a6042ca924a78d225e85d0acddf5db.tar.bz2 scala-a5fab1f588a6042ca924a78d225e85d0acddf5db.zip |
SI-9066 fix null.asInstanceOf[Unit]
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Erasure.scala | 4 |
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) => |