summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorHubert Plociniczak <hubert.plociniczak@gmail.com>2012-09-27 11:33:32 +0200
committerHubert Plociniczak <hubert.plociniczak@gmail.com>2012-10-18 09:45:25 +0200
commita3c5427fa0b1347d932b2e2f2bf4c357b67604f1 (patch)
tree288afc6af9242a31b797523eb54df80188ff9f95 /src/reflect
parenta52bd2c0b9d6715773edeb08651ee325f628370a (diff)
downloadscala-a3c5427fa0b1347d932b2e2f2bf4c357b67604f1.tar.gz
scala-a3c5427fa0b1347d932b2e2f2bf4c357b67604f1.tar.bz2
scala-a3c5427fa0b1347d932b2e2f2bf4c357b67604f1.zip
Incorporated changes suggested in code review
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/Trees.scala43
1 files changed, 19 insertions, 24 deletions
diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala
index 2bffcba6a8..d6b4f18855 100644
--- a/src/reflect/scala/reflect/internal/Trees.scala
+++ b/src/reflect/scala/reflect/internal/Trees.scala
@@ -178,12 +178,9 @@ trait Trees extends api.Trees { self: SymbolTable =>
new ForeachPartialTreeTraverser(pf).traverse(this)
}
- def changeOwner(pairs: (Symbol, Symbol)*): Tree =
- changeOwner(false, pairs: _*)
-
- def changeOwner(followModuleClass: Boolean, pairs: (Symbol, Symbol)*): Tree = {
+ def changeOwner(pairs: (Symbol, Symbol)*): Tree = {
pairs.foldLeft(this) { case (t, (oldOwner, newOwner)) =>
- new ChangeOwnerTraverser(oldOwner, newOwner, followModuleClass) apply t
+ new ChangeOwnerTraverser(oldOwner, newOwner) apply t
}
}
@@ -1302,29 +1299,27 @@ trait Trees extends api.Trees { self: SymbolTable =>
}
}
- class ChangeOwnerTraverser(val oldowner: Symbol, val newowner: Symbol, followModuleClass: Boolean = false) extends Traverser {
- def changeSymboOwnerIfCorrect(sym: Symbol) = {
+ class ChangeOwnerTraverser(val oldowner: Symbol, val newowner: Symbol) extends Traverser {
+ final def change(sym: Symbol) = {
if (sym != NoSymbol && sym.owner == oldowner)
sym.owner = newowner
}
- def changeOwner(tree: Tree) = tree match {
- case Return(expr) =>
- if (tree.symbol == oldowner) {
- // SI-5612
- if (newowner hasTransOwner oldowner)
- log("NOT changing owner of %s because %s is nested in %s".format(tree, newowner, oldowner))
- else {
- log("changing owner of %s: %s => %s".format(tree, oldowner, newowner))
- tree.symbol = newowner
- }
- }
- case _: DefTree | _: Function =>
- changeSymboOwnerIfCorrect(tree.symbol)
- if (followModuleClass) changeSymboOwnerIfCorrect(tree.symbol.moduleClass)
- case _ =>
- }
override def traverse(tree: Tree) {
- changeOwner(tree)
+ tree match {
+ case _: Return =>
+ if (tree.symbol == oldowner) {
+ // SI-5612
+ if (newowner hasTransOwner oldowner)
+ log("NOT changing owner of %s because %s is nested in %s".format(tree, newowner, oldowner))
+ else {
+ log("changing owner of %s: %s => %s".format(tree, oldowner, newowner))
+ tree.symbol = newowner
+ }
+ }
+ case _: DefTree | _: Function =>
+ change(tree.symbol)
+ case _ =>
+ }
super.traverse(tree)
}
}