summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/Internals.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2015-10-11 18:58:43 +0200
committerAdriaan Moors <adriaan.moors@typesafe.com>2015-11-12 11:33:43 -0800
commit2a20ced512038a930e79fc14bb30782fbd910ac1 (patch)
tree304b01033ac3d462fd4b979ff6e61176f45ff875 /src/reflect/scala/reflect/internal/Internals.scala
parent5d733713904af89383cf72c85da448e45b5645ce (diff)
downloadscala-2a20ced512038a930e79fc14bb30782fbd910ac1.tar.gz
scala-2a20ced512038a930e79fc14bb30782fbd910ac1.tar.bz2
scala-2a20ced512038a930e79fc14bb30782fbd910ac1.zip
Also mutate module *class*'s owner in ChangeOwnerTraverser
Keep owner for module (symbol of the tree) and module class (holds the members) in synch while moving trees between owners (e.g., while duplicating them in specialization)
Diffstat (limited to 'src/reflect/scala/reflect/internal/Internals.scala')
-rw-r--r--src/reflect/scala/reflect/internal/Internals.scala16
1 files changed, 2 insertions, 14 deletions
diff --git a/src/reflect/scala/reflect/internal/Internals.scala b/src/reflect/scala/reflect/internal/Internals.scala
index ad4cec5b4d..acf000ebc5 100644
--- a/src/reflect/scala/reflect/internal/Internals.scala
+++ b/src/reflect/scala/reflect/internal/Internals.scala
@@ -60,19 +60,7 @@ trait Internals extends api.Internals {
def typeDef(sym: Symbol): TypeDef = self.TypeDef(sym)
def labelDef(sym: Symbol, params: List[Symbol], rhs: Tree): LabelDef = self.LabelDef(sym, params, rhs)
- def changeOwner(tree: Tree, prev: Symbol, next: Symbol): tree.type = {
- object changeOwnerAndModuleClassTraverser extends ChangeOwnerTraverser(prev, next) {
- override def traverse(tree: Tree) {
- tree match {
- case _: DefTree => change(tree.symbol.moduleClass)
- case _ => // do nothing
- }
- super.traverse(tree)
- }
- }
- changeOwnerAndModuleClassTraverser.traverse(tree)
- tree
- }
+ def changeOwner(tree: Tree, prev: Symbol, next: Symbol): tree.type = { new ChangeOwnerTraverser(prev, next).traverse(tree); tree }
lazy val gen = self.treeBuild
@@ -170,4 +158,4 @@ trait Internals extends api.Internals {
def mkZero(tp: Type): Tree = self.gen.mkZero(tp)
def mkCast(tree: Tree, pt: Type): Tree = self.gen.mkCast(tree, pt)
}
-} \ No newline at end of file
+}