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
committerEugene Burmako <xeno.by@gmail.com>2012-12-11 08:19:40 +0100
commit286abfc4cf6ed41c1622f4964aae321b0b9b6c6d (patch)
tree825c527163321df125d8291d63b896f1ccae81cd /src/compiler/scala/reflect/reify/codegen/GenTrees.scala
parent0acb8a30c379f268e8a3e1340504530493a1a1dc (diff)
downloadscala-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/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 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(_, _) =>