diff options
author | Paul Phillips <paulp@improving.org> | 2012-12-31 08:57:19 -0800 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-12-31 08:57:19 -0800 |
commit | 666572261c41cc92b06c03bf4aa260c198240cd8 (patch) | |
tree | b1501ddc2b6126507a9234dc0e2f5d858cdfebef /src/reflect/scala/reflect/api/Trees.scala | |
parent | 39641b4593196b11d0aeba1777fdffc72ed50be4 (diff) | |
parent | 6a288b632e0e78a96f1298be9b4e8231728183af (diff) | |
download | scala-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.scala | 9 |
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 = { |