diff options
author | Paul Phillips <paulp@improving.org> | 2012-11-30 06:30:32 +0100 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-12-27 15:47:32 -0800 |
commit | 113405b935db20705b88df4fd3ff24273e4391bc (patch) | |
tree | 1b7a9b3522fb834326173b849dcde588e175e35c /src/reflect/scala/reflect/internal/Trees.scala | |
parent | cdf6feb1aea366c33ac99e3e5f1e235f7ea0ae19 (diff) | |
download | scala-113405b935db20705b88df4fd3ff24273e4391bc.tar.gz scala-113405b935db20705b88df4fd3ff24273e4391bc.tar.bz2 scala-113405b935db20705b88df4fd3ff24273e4391bc.zip |
Eliminate allocations in Trees.
Diffstat (limited to 'src/reflect/scala/reflect/internal/Trees.scala')
-rw-r--r-- | src/reflect/scala/reflect/internal/Trees.scala | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala index 9e737528d2..870c1ec5ed 100644 --- a/src/reflect/scala/reflect/internal/Trees.scala +++ b/src/reflect/scala/reflect/internal/Trees.scala @@ -926,8 +926,11 @@ trait Trees extends api.Trees { self: SymbolTable => def withPosition(flag: Long, position: Position) = copy() setPositions positions + (flag -> position) - override def mapAnnotations(f: List[Tree] => List[Tree]): Modifiers = - Modifiers(flags, privateWithin, f(annotations)) setPositions positions + override def mapAnnotations(f: List[Tree] => List[Tree]): Modifiers = { + val newAnns = f(annotations) + if (annotations == newAnns) this + else Modifiers(flags, privateWithin, newAnns) setPositions positions + } override def toString = "Modifiers(%s, %s, %s)".format(flagString, annotations mkString ", ", positions) } |