summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2012-03-23 10:24:43 +0100
committerLukas Rytz <lukas.rytz@epfl.ch>2012-03-23 10:24:43 +0100
commit91c5a3ba9a38e34617315c97876baed4e7eab671 (patch)
treeb21ffde1a8633c37425daa86e110ba6b282cd331 /src/compiler
parent3db29dde051614d976bca92a1cdeb109c9c0ab01 (diff)
downloadscala-91c5a3ba9a38e34617315c97876baed4e7eab671.tar.gz
scala-91c5a3ba9a38e34617315c97876baed4e7eab671.tar.bz2
scala-91c5a3ba9a38e34617315c97876baed4e7eab671.zip
Undo the revert.
reverts 3db29dde051614d976bca92a1cdeb109c9c0ab01 and 5af2bf54d21ac63236cd6e68586b2c38fa0f28c3 restores 19a48510c2e18430a35319c04dfe3bad7119f23f
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/reflect/internal/Trees.scala12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/compiler/scala/reflect/internal/Trees.scala b/src/compiler/scala/reflect/internal/Trees.scala
index ac2147d284..1a40e0105c 100644
--- a/src/compiler/scala/reflect/internal/Trees.scala
+++ b/src/compiler/scala/reflect/internal/Trees.scala
@@ -324,10 +324,14 @@ trait Trees extends api.Trees { self: SymbolTable =>
}
class ChangeOwnerTraverser(val oldowner: Symbol, val newowner: Symbol) extends Traverser {
- def changeOwner(tree: Tree) = {
- if ((tree.isDef || tree.isInstanceOf[Function]) &&
- tree.symbol != NoSymbol && tree.symbol.owner == oldowner)
- tree.symbol.owner = newowner
+ def changeOwner(tree: Tree) = tree match {
+ case Return(expr) =>
+ if (tree.symbol == oldowner)
+ tree.symbol = newowner
+ case _: DefTree | _: Function =>
+ if (tree.symbol != NoSymbol && tree.symbol.owner == oldowner)
+ tree.symbol.owner = newowner
+ case _ =>
}
override def traverse(tree: Tree) {
changeOwner(tree)