summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/api/Trees.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-12-31 08:57:19 -0800
committerPaul Phillips <paulp@improving.org>2012-12-31 08:57:19 -0800
commit666572261c41cc92b06c03bf4aa260c198240cd8 (patch)
treeb1501ddc2b6126507a9234dc0e2f5d858cdfebef /src/reflect/scala/reflect/api/Trees.scala
parent39641b4593196b11d0aeba1777fdffc72ed50be4 (diff)
parent6a288b632e0e78a96f1298be9b4e8231728183af (diff)
downloadscala-666572261c41cc92b06c03bf4aa260c198240cd8.tar.gz
scala-666572261c41cc92b06c03bf4aa260c198240cd8.tar.bz2
scala-666572261c41cc92b06c03bf4aa260c198240cd8.zip
Merge pull request #1823 from paulp/pr/eliminate-allocations
Eliminating allocations.
Diffstat (limited to 'src/reflect/scala/reflect/api/Trees.scala')
-rw-r--r--src/reflect/scala/reflect/api/Trees.scala9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/reflect/scala/reflect/api/Trees.scala b/src/reflect/scala/reflect/api/Trees.scala
index 637a7a4c40..0170bf2032 100644
--- a/src/reflect/scala/reflect/api/Trees.scala
+++ b/src/reflect/scala/reflect/api/Trees.scala
@@ -2927,7 +2927,8 @@ trait Trees { self: Universe =>
def transform(tree: Tree): Tree = itransform(this, tree)
/** Transforms a list of trees. */
- def transformTrees(trees: List[Tree]): List[Tree] = trees mapConserve (transform(_))
+ def transformTrees(trees: List[Tree]): List[Tree] =
+ if (trees.isEmpty) Nil else trees mapConserve transform
/** Transforms a `Template`. */
def transformTemplate(tree: Template): Template =
@@ -2957,8 +2958,10 @@ trait Trees { self: Universe =>
if (exprOwner != currentOwner && stat.isTerm) atOwner(exprOwner)(transform(stat))
else transform(stat)) filter (EmptyTree != _)
/** Transforms `Modifiers`. */
- def transformModifiers(mods: Modifiers): Modifiers =
- mods.mapAnnotations(transformTrees)
+ def transformModifiers(mods: Modifiers): Modifiers = {
+ if (mods.annotations.isEmpty) mods
+ else mods mapAnnotations transformTrees
+ }
/** Transforms a tree with a given owner symbol. */
def atOwner[A](owner: Symbol)(trans: => A): A = {