summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@typesafe.com>2015-12-18 08:59:29 +0100
committerLukas Rytz <lukas.rytz@typesafe.com>2015-12-18 08:59:29 +0100
commit1873db3fb78ba777c009bce11564466de875257a (patch)
treefb66fceac7223128171551269ce885edfb82239f /src/compiler/scala/tools/nsc/ast
parent2d3625d9803912edc1d4a69fa4da0961719d5001 (diff)
parent6fb41ed2e0f001df7cea54ec70e378bdbe01aa65 (diff)
downloadscala-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.scala13
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,