diff options
author | Lukas Rytz <lukas.rytz@typesafe.com> | 2015-12-18 08:59:29 +0100 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@typesafe.com> | 2015-12-18 08:59:29 +0100 |
commit | 1873db3fb78ba777c009bce11564466de875257a (patch) | |
tree | fb66fceac7223128171551269ce885edfb82239f /src/compiler/scala/tools/nsc/ast | |
parent | 2d3625d9803912edc1d4a69fa4da0961719d5001 (diff) | |
parent | 6fb41ed2e0f001df7cea54ec70e378bdbe01aa65 (diff) | |
download | scala-1873db3fb78ba777c009bce11564466de875257a.tar.gz scala-1873db3fb78ba777c009bce11564466de875257a.tar.bz2 scala-1873db3fb78ba777c009bce11564466de875257a.zip |
Merge pull request #4729 from retronym/topic-trait-defaults-module
Desugar module var and accessor in refchecks/lazyvals
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/TreeGen.scala | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala index 332acf4a26..3167f87383 100644 --- a/src/compiler/scala/tools/nsc/ast/TreeGen.scala +++ b/src/compiler/scala/tools/nsc/ast/TreeGen.scala @@ -242,11 +242,14 @@ abstract class TreeGen extends scala.reflect.internal.TreeGen with TreeDSL { def mkSynchronizedCheck(clazz: Symbol, cond: Tree, syncBody: List[Tree], stats: List[Tree]): Tree = mkSynchronizedCheck(mkAttributedThis(clazz), cond, syncBody, stats) - def mkSynchronizedCheck(attrThis: Tree, cond: Tree, syncBody: List[Tree], stats: List[Tree]): Tree = - Block(mkSynchronized( - attrThis, - If(cond, Block(syncBody: _*), EmptyTree)) :: - stats: _*) + def mkSynchronizedCheck(attrThis: Tree, cond: Tree, syncBody: List[Tree], stats: List[Tree]): Tree = { + def blockOrStat(stats: List[Tree]): Tree = stats match { + case head :: Nil => head + case _ => Block(stats : _*) + } + val sync = mkSynchronized(attrThis, If(cond, blockOrStat(syncBody), EmptyTree)) + blockOrStat(sync :: stats) + } /** Creates a tree representing new Object { stats }. * To make sure an anonymous subclass of Object is created, |