summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/internal/Symbols.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-11-04 05:54:01 +0000
committerPaul Phillips <paulp@improving.org>2011-11-04 05:54:01 +0000
commit5df51cc5a6ead1f9d68d1e988cda3a1698daf708 (patch)
tree487ffe2aa323ea44ec72c512e0a1d0cedc7b59eb /src/compiler/scala/reflect/internal/Symbols.scala
parent53427f86cd4fd240dfa7ee022f4d6c210c56a3e0 (diff)
downloadscala-5df51cc5a6ead1f9d68d1e988cda3a1698daf708.tar.gz
scala-5df51cc5a6ead1f9d68d1e988cda3a1698daf708.tar.bz2
scala-5df51cc5a6ead1f9d68d1e988cda3a1698daf708.zip
Some modest optimizations and beauty treatments.
No review.
Diffstat (limited to 'src/compiler/scala/reflect/internal/Symbols.scala')
-rw-r--r--src/compiler/scala/reflect/internal/Symbols.scala17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/compiler/scala/reflect/internal/Symbols.scala b/src/compiler/scala/reflect/internal/Symbols.scala
index e848f0eeda..fc3fea0fd4 100644
--- a/src/compiler/scala/reflect/internal/Symbols.scala
+++ b/src/compiler/scala/reflect/internal/Symbols.scala
@@ -2426,17 +2426,16 @@ trait Symbols extends api.Symbols { self: SymbolTable =>
override def originalEnclosingMethod = this
}
- def cloneSymbols[T <: Symbol](syms: List[T]): List[T] = {
- val syms1 = syms map (_.cloneSymbol.asInstanceOf[T])
- for (sym1 <- syms1) sym1.setInfo(sym1.info.substSym(syms, syms1))
- syms1
+ private def cloneAndSubstInfos[T <: Symbol](syms: List[T])(f: T => Symbol): List[T] = {
+ val syms1 = syms map (s => f(s).asInstanceOf[T])
+ syms1 map (sym1 => sym1 setInfo sym1.info.substSym(syms, syms1))
}
- def cloneSymbols[T <: Symbol](syms: List[T], owner: Symbol): List[T] = {
- val syms1 = syms map (_.cloneSymbol(owner).asInstanceOf[T])
- for (sym1 <- syms1) sym1.setInfo(sym1.info.substSym(syms, syms1))
- syms1
- }
+ def cloneSymbols[T <: Symbol](syms: List[T]): List[T] =
+ cloneAndSubstInfos(syms)(_.cloneSymbol)
+
+ def cloneSymbols[T <: Symbol](syms: List[T], owner: Symbol): List[T] =
+ cloneAndSubstInfos(syms)(_ cloneSymbol owner)
/** An exception for cyclic references of symbol definitions */
case class CyclicReference(sym: Symbol, info: Type)