diff options
author | Andriy Polishchuk <andriy.s.polishchuk@gmail.com> | 2012-12-06 11:59:05 +0200 |
---|---|---|
committer | Andriy Polishchuk <andriy.s.polishchuk@gmail.com> | 2012-12-06 13:10:53 +0200 |
commit | 0433ca4fc8c1ad0d0733b2fdccc6352904a5a531 (patch) | |
tree | c45e6d26f340802cc18c7b4035e1d422897bdb4c /src/compiler/scala/reflect/reify/codegen/GenTrees.scala | |
parent | 1cfb36317834f9bca0c3ce94e92590f7b4ace3b7 (diff) | |
download | scala-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.scala | 7 |
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(_, _) => |