diff options
author | Paul Phillips <paulp@improving.org> | 2011-11-04 05:54:01 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-11-04 05:54:01 +0000 |
commit | 5df51cc5a6ead1f9d68d1e988cda3a1698daf708 (patch) | |
tree | 487ffe2aa323ea44ec72c512e0a1d0cedc7b59eb /src/compiler/scala/reflect/internal/Symbols.scala | |
parent | 53427f86cd4fd240dfa7ee022f4d6c210c56a3e0 (diff) | |
download | scala-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.scala | 17 |
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) |