diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-10-11 18:58:43 +0200 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-11-12 11:33:43 -0800 |
commit | 2a20ced512038a930e79fc14bb30782fbd910ac1 (patch) | |
tree | 304b01033ac3d462fd4b979ff6e61176f45ff875 /src/reflect/scala/reflect/internal/Internals.scala | |
parent | 5d733713904af89383cf72c85da448e45b5645ce (diff) | |
download | scala-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.scala | 16 |
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 +} |