summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/reify/codegen/GenTrees.scala
diff options
context:
space:
mode:
authorAndriy Polishchuk <andriy.s.polishchuk@gmail.com>2012-12-06 11:59:05 +0200
committerAndriy Polishchuk <andriy.s.polishchuk@gmail.com>2012-12-06 13:10:53 +0200
commit0433ca4fc8c1ad0d0733b2fdccc6352904a5a531 (patch)
treec45e6d26f340802cc18c7b4035e1d422897bdb4c /src/compiler/scala/reflect/reify/codegen/GenTrees.scala
parent1cfb36317834f9bca0c3ce94e92590f7b4ace3b7 (diff)
downloadscala-0433ca4fc8c1ad0d0733b2fdccc6352904a5a531.tar.gz
scala-0433ca4fc8c1ad0d0733b2fdccc6352904a5a531.tar.bz2
scala-0433ca4fc8c1ad0d0733b2fdccc6352904a5a531.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/compiler/scala/reflect/reify/codegen/GenTrees.scala')
-rw-r--r--src/compiler/scala/reflect/reify/codegen/GenTrees.scala7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/compiler/scala/reflect/reify/codegen/GenTrees.scala b/src/compiler/scala/reflect/reify/codegen/GenTrees.scala
index 86ad23cd15..e671124d4c 100644
--- a/src/compiler/scala/reflect/reify/codegen/GenTrees.scala
+++ b/src/compiler/scala/reflect/reify/codegen/GenTrees.scala
@@ -144,6 +144,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))
}
@@ -193,6 +198,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(_, _) =>