aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/core/SymDenotations.scala
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/SymDenotations.scala')
-rw-r--r--compiler/src/dotty/tools/dotc/core/SymDenotations.scala24
1 files changed, 12 insertions, 12 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/SymDenotations.scala b/compiler/src/dotty/tools/dotc/core/SymDenotations.scala
index 74505d811..e50d6a133 100644
--- a/compiler/src/dotty/tools/dotc/core/SymDenotations.scala
+++ b/compiler/src/dotty/tools/dotc/core/SymDenotations.scala
@@ -393,21 +393,18 @@ object SymDenotations {
* enclosing packages do not form part of the name.
*/
def fullNameSeparated(separator: String)(implicit ctx: Context): Name = {
- var sep = separator
- var stopAtPackage = false
- if (sep.isEmpty) {
- sep = "$"
- stopAtPackage = true
- }
+ val stopAtPackage = separator.isEmpty
+ val sep = if (stopAtPackage) "$" else separator
if (symbol == NoSymbol ||
owner == NoSymbol ||
owner.isEffectiveRoot ||
stopAtPackage && owner.is(PackageClass)) name
else {
+ var filler = ""
var encl = owner
while (!encl.isClass && !encl.isPackageObject) {
encl = encl.owner
- sep += "~"
+ filler += "~"
}
var prefix = encl.fullNameSeparated(separator)
val fn =
@@ -416,14 +413,17 @@ object SymDenotations {
// duplicate scalac's behavior: don't write a double '$$' for module class members.
prefix = prefix.exclude(NameInfo.ModuleClassKind)
name rewrite {
- case n: SimpleTermName => prefix.derived(NameInfo.qualifier(sep)(n))
+ case n: SimpleTermName =>
+ val n1 = if (filler.isEmpty) n else termName(filler ++ n)
+ prefix.derived(NameInfo.qualifier(sep)(n1))
}
}
else {
- if (owner.is(ModuleClass, butNot = Package) && sep == "$")
- // duplicate scalac's behavior: don't write a double '$$' for module class members.
- sep = ""
- prefix ++ sep ++ name
+ val sep1 =
+ if (owner.is(ModuleClass, butNot = Package) && sep == "$") ""
+ else sep
+ // duplicate scalac's behavior: don't write a double '$$' for module class members.
+ prefix ++ sep1 ++ name
}
if (isType) fn.toTypeName else fn.toTermName
}