aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-02-13 14:15:01 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-02-13 14:15:01 +0100
commit37c2dcc2268e6840cfcd89fc5937d461a493e1fd (patch)
tree8bf97bbb2aa47f81fb8865be9acfea64d7fa72ec /src/dotty/tools/dotc/transform
parent19215a819003f962054b49166bbeb2d19baa4939 (diff)
downloaddotty-37c2dcc2268e6840cfcd89fc5937d461a493e1fd.tar.gz
dotty-37c2dcc2268e6840cfcd89fc5937d461a493e1fd.tar.bz2
dotty-37c2dcc2268e6840cfcd89fc5937d461a493e1fd.zip
Do not box Unit inside try, match and if branches.
Diffstat (limited to 'src/dotty/tools/dotc/transform')
-rw-r--r--src/dotty/tools/dotc/transform/Erasure.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/transform/Erasure.scala b/src/dotty/tools/dotc/transform/Erasure.scala
index 58419cf03..8748abc64 100644
--- a/src/dotty/tools/dotc/transform/Erasure.scala
+++ b/src/dotty/tools/dotc/transform/Erasure.scala
@@ -403,8 +403,13 @@ object Erasure extends TypeTestsCasts{
override def typedTry(tree: untpd.Try, pt: Type)(implicit ctx: Context) =
super.typedTry(tree, adaptProto(tree, pt))
- private def adaptProto(tree: untpd.Tree, pt: Type)(implicit ctx: Context) =
- if (pt.isValueType) pt else erasure(tree.typeOpt)
+ private def adaptProto(tree: untpd.Tree, pt: Type)(implicit ctx: Context) = {
+ if (pt.isValueType) pt else {
+ if(tree.typeOpt.derivesFrom(ctx.definitions.UnitClass))
+ tree.typeOpt
+ else erasure(tree.typeOpt)
+ }
+ }
override def typedValDef(vdef: untpd.ValDef, sym: Symbol)(implicit ctx: Context): ValDef =
super.typedValDef(untpd.cpy.ValDef(vdef)(