diff options
author | Andriy Polishchuk <andriy.s.polishchuk@gmail.com> | 2012-12-06 11:59:05 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-12-11 08:19:40 +0100 |
commit | 286abfc4cf6ed41c1622f4964aae321b0b9b6c6d (patch) | |
tree | 825c527163321df125d8291d63b896f1ccae81cd /src | |
parent | 0acb8a30c379f268e8a3e1340504530493a1a1dc (diff) | |
download | scala-286abfc4cf6ed41c1622f4964aae321b0b9b6c6d.tar.gz scala-286abfc4cf6ed41c1622f4964aae321b0b9b6c6d.tar.bz2 scala-286abfc4cf6ed41c1622f4964aae321b0b9b6c6d.zip |
SI-5841 reification of renamed imports
Reification of renamed imports is done by catching Selects with name != their tree.symbol.name,
replacing this name with tree.symbol.name, and then doing reifyProduct in case
of renamed terms and reifyBoundType (inner) in case of renamed types.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/reflect/reify/codegen/GenTrees.scala | 7 | ||||
-rw-r--r-- | src/compiler/scala/reflect/reify/utils/Extractors.scala | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/compiler/scala/reflect/reify/codegen/GenTrees.scala b/src/compiler/scala/reflect/reify/codegen/GenTrees.scala index 918aedce51..f489476e96 100644 --- a/src/compiler/scala/reflect/reify/codegen/GenTrees.scala +++ b/src/compiler/scala/reflect/reify/codegen/GenTrees.scala @@ -147,6 +147,11 @@ trait GenTrees { } case tree @ Ident(_) if tree.symbol.isLocalToReifee => mirrorCall(nme.Ident, reify(tree.name)) + case Select(qual, name) => + if (tree.symbol != NoSymbol && tree.symbol.name != name) + reifyProduct(Select(qual, tree.symbol.name)) + else + reifyProduct(tree) case _ => throw new Error("internal error: %s (%s, %s) is not supported".format(tree, tree.productPrefix, tree.getClass)) } @@ -196,6 +201,8 @@ trait GenTrees { } tree match { + case Select(qual, name) if (name != tree.symbol.name) => + reifyBoundType(Select(qual, tree.symbol.name)) case Select(_, _) => reifyBoundType(tree) case SelectFromTypeTree(_, _) => diff --git a/src/compiler/scala/reflect/reify/utils/Extractors.scala b/src/compiler/scala/reflect/reify/utils/Extractors.scala index b60d15c1d4..ebbcb95481 100644 --- a/src/compiler/scala/reflect/reify/utils/Extractors.scala +++ b/src/compiler/scala/reflect/reify/utils/Extractors.scala @@ -251,6 +251,8 @@ trait Extractors { object BoundTerm { def unapply(tree: Tree): Option[Tree] = tree match { + case Select(_, name) if name.isTermName => + Some(tree) case Ident(name) if name.isTermName => Some(tree) case This(_) => |