summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@typesafe.com>2015-09-22 08:59:01 +0200
committerLukas Rytz <lukas.rytz@typesafe.com>2015-09-22 08:59:01 +0200
commit128d632573b2d87f16b27724084570df5e3fe2a5 (patch)
tree8fa907f4850780c2ad567f9b9e70f942fb0ef5f7 /src/reflect
parent480db4c87e3112d62ba3e829a65f728e9a814937 (diff)
parente265373660e4727be6fcc6104d7a722ca662b53b (diff)
downloadscala-128d632573b2d87f16b27724084570df5e3fe2a5.tar.gz
scala-128d632573b2d87f16b27724084570df5e3fe2a5.tar.bz2
scala-128d632573b2d87f16b27724084570df5e3fe2a5.zip
Merge pull request #4749 from retronym/ticket/9473
SI-9473 Cleaner references to statically owned symbols
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/TreeGen.scala11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/reflect/scala/reflect/internal/TreeGen.scala b/src/reflect/scala/reflect/internal/TreeGen.scala
index 5c8ae17f5b..2933aa3892 100644
--- a/src/reflect/scala/reflect/internal/TreeGen.scala
+++ b/src/reflect/scala/reflect/internal/TreeGen.scala
@@ -129,7 +129,16 @@ abstract class TreeGen {
/** Builds a reference to given symbol. */
def mkAttributedRef(sym: Symbol): RefTree =
- if (sym.owner.isClass) mkAttributedRef(sym.owner.thisType, sym)
+ if (sym.owner.isStaticOwner) {
+ if (sym.owner.isRoot)
+ mkAttributedIdent(sym)
+ else {
+ val ownerModule = sym.owner.sourceModule
+ assert(ownerModule != NoSymbol, sym.owner)
+ mkAttributedSelect(mkAttributedRef(sym.owner.sourceModule), sym)
+ }
+ }
+ else if (sym.owner.isClass) mkAttributedRef(sym.owner.thisType, sym)
else mkAttributedIdent(sym)
def mkUnattributedRef(sym: Symbol): RefTree = mkUnattributedRef(sym.fullNameAsName('.'))