diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-02-13 14:15:01 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-02-13 14:15:01 +0100 |
commit | 37c2dcc2268e6840cfcd89fc5937d461a493e1fd (patch) | |
tree | 8bf97bbb2aa47f81fb8865be9acfea64d7fa72ec /src/dotty/tools/dotc/transform | |
parent | 19215a819003f962054b49166bbeb2d19baa4939 (diff) | |
download | dotty-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.scala | 9 |
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)( |