aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/core/SymDenotations.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-03-24 19:15:51 +0100
committerMartin Odersky <odersky@gmail.com>2017-04-11 09:33:10 +0200
commit0755ec28d22798c51aedf45e4dcdf1ed299c2aa5 (patch)
tree06b8b8f94005a9380d76c42880239fe282be268b /compiler/src/dotty/tools/dotc/core/SymDenotations.scala
parent0ad1cd816bc1537ad332addabb0ff6c293e3e0a0 (diff)
downloaddotty-0755ec28d22798c51aedf45e4dcdf1ed299c2aa5.tar.gz
dotty-0755ec28d22798c51aedf45e4dcdf1ed299c2aa5.tar.bz2
dotty-0755ec28d22798c51aedf45e4dcdf1ed299c2aa5.zip
Add Variant NameInfo
Plus further bug fixes.
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
}