summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/TreeGen.scala
diff options
context:
space:
mode:
authorDen Shabalin <den.shabalin@gmail.com>2013-09-06 18:28:44 +0200
committerDen Shabalin <den.shabalin@gmail.com>2013-09-12 12:43:23 +0200
commit95fe19545d60ae9aa79d2c8d5665c7f3b0cbdb1a (patch)
tree7848cd767ac44c0e6e5790553d29afac9439a030 /src/reflect/scala/reflect/internal/TreeGen.scala
parent5607bd137d8a22c6933e3692a4a1626928acf67f (diff)
downloadscala-95fe19545d60ae9aa79d2c8d5665c7f3b0cbdb1a.tar.gz
scala-95fe19545d60ae9aa79d2c8d5665c7f3b0cbdb1a.tar.bz2
scala-95fe19545d60ae9aa79d2c8d5665c7f3b0cbdb1a.zip
SI-6489 parsing in macros should provide proper positions
1. macro parsing doesn't use toolbox any more but calls parser directly 2. in order for this to work parser has to be refactored to limit usage of currentUnit and rewire it into parser's local unit method which might use currentUnit for some parsers but will user proper unit for UnitParser 3. similar change has to be done to make compilation unit's reporter overridable
Diffstat (limited to 'src/reflect/scala/reflect/internal/TreeGen.scala')
-rw-r--r--src/reflect/scala/reflect/internal/TreeGen.scala6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/TreeGen.scala b/src/reflect/scala/reflect/internal/TreeGen.scala
index 07fa6fb317..26adf20c52 100644
--- a/src/reflect/scala/reflect/internal/TreeGen.scala
+++ b/src/reflect/scala/reflect/internal/TreeGen.scala
@@ -437,4 +437,10 @@ abstract class TreeGen extends macros.TreeBuilder {
else if (!stats.last.isTerm) Block(stats, Literal(Constant(())))
else if (stats.length == 1) stats.head
else Block(stats.init, stats.last)
+
+ def mkTreeOrBlock(stats: List[Tree]) = stats match {
+ case Nil => EmptyTree
+ case head :: Nil => head
+ case _ => gen.mkBlock(stats)
+ }
}