From 95fe19545d60ae9aa79d2c8d5665c7f3b0cbdb1a Mon Sep 17 00:00:00 2001 From: Den Shabalin Date: Fri, 6 Sep 2013 18:28:44 +0200 Subject: 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 --- src/reflect/scala/reflect/internal/TreeGen.scala | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/reflect/scala/reflect/internal/TreeGen.scala') 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) + } } -- cgit v1.2.3