summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-11-20 10:26:32 +0100
committerJason Zaugg <jzaugg@gmail.com>2013-11-23 09:53:28 +0100
commit5d5596bb07c0b5985fe9a6ba5433a3d463918b28 (patch)
tree33ed934026d668a55403dddfaa7d92f2602f435e
parentb5be392967d84591d45153408960d0e5b68d82e9 (diff)
downloadscala-5d5596bb07c0b5985fe9a6ba5433a3d463918b28.tar.gz
scala-5d5596bb07c0b5985fe9a6ba5433a3d463918b28.tar.bz2
scala-5d5596bb07c0b5985fe9a6ba5433a3d463918b28.zip
Special treatment for local symbols in TypeTreeMemberType
Avoids calling `thisType` on the owner if it is a term symbol, which doesn't make much sense. This method is used internally in tree factory methods that create, e.g, a `DefDef` based on the info of a `Symbol`.
-rw-r--r--src/reflect/scala/reflect/internal/Trees.scala2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/Trees.scala b/src/reflect/scala/reflect/internal/Trees.scala
index b0abc0be7b..d191fbd38f 100644
--- a/src/reflect/scala/reflect/internal/Trees.scala
+++ b/src/reflect/scala/reflect/internal/Trees.scala
@@ -590,7 +590,7 @@ trait Trees extends api.Trees {
def TypeTree(tp: Type): TypeTree = TypeTree() setType tp
private def TypeTreeMemberType(sym: Symbol): TypeTree = {
// Needed for pos/t4970*.scala. See SI-7853
- val resType = (sym.owner.thisType memberType sym).finalResultType
+ val resType = (if (sym.isLocal) sym.tpe else (sym.owner.thisType memberType sym)).finalResultType
atPos(sym.pos.focus)(TypeTree(resType))
}