summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Trees.scala
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-09 21:49:41 +0200
commita15969a6963a896fa3a4aa43effaf625833e363d (patch)
tree28a3ff68beef43903cfb5df9938e75702369d5ed /src/reflect/scala/reflect/internal/Trees.scala
parent63c90af33290c2df38e70982c8c0151df1b106a9 (diff)
downloadscala-a15969a6963a896fa3a4aa43effaf625833e363d.tar.gz
scala-a15969a6963a896fa3a4aa43effaf625833e363d.tar.bz2
scala-a15969a6963a896fa3a4aa43effaf625833e363d.zip
Incorporated changes suggested in code review
Diffstat (limited to 'src/reflect/scala/reflect/internal/Trees.scala')
-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 ea7336340f..4bb88145b3 100644
--- a/src/reflect/scala/reflect/internal/Trees.scala
+++ b/src/reflect/scala/reflect/internal/Trees.scala
@@ -179,12 +179,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
}
}
@@ -1313,29 +1310,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)
}
}