diff --git a/compiler/src/dotty/tools/dotc/core/Flags.scala b/compiler/src/dotty/tools/dotc/core/Flags.scala index cceebe50b219..6561516952db 100644 --- a/compiler/src/dotty/tools/dotc/core/Flags.scala +++ b/compiler/src/dotty/tools/dotc/core/Flags.scala @@ -107,19 +107,22 @@ object Flags { } /** The list of non-empty names of flags that are set in this FlagSet */ - def flagStrings: Seq[String] = { + def flagStrings(privateWithin: String): Seq[String] = { val rawStrings = (2 to MaxFlag).flatMap(flagString) - if (this is Local) + val scopeStr = + if (this is Local) "this" + else privateWithin + if (privateWithin != "") rawStrings.filter(_ != "").map { - case "private" => "private[this]" - case "protected" => "protected[this]" + case "private" => s"private[$scopeStr]" + case "protected" => s"protected[$scopeStr]" case str => str } else rawStrings } /** The string representation of this flag set */ - override def toString: String = flagStrings.mkString(" ") + override def toString: String = flagStrings("").mkString(" ") } def termFlagSet(x: Long) = FlagSet(TERMS | x) diff --git a/compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala b/compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala index 6bf763416406..af638afbe4db 100644 --- a/compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala +++ b/compiler/src/dotty/tools/dotc/printing/PlainPrinter.scala @@ -401,7 +401,7 @@ class PlainPrinter(_ctx: Context) extends Printer { /** String representation of symbol's flags */ protected def toTextFlags(sym: Symbol): Text = - Text(sym.flagsUNSAFE.flagStrings map stringToText, " ") + Text(sym.flagsUNSAFE.flagStrings(nameString(sym.privateWithin.name)) map stringToText, " ") /** String representation of symbol's variance or "" if not applicable */ protected def varianceString(sym: Symbol): String = varianceString(sym.variance) diff --git a/compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala b/compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala index d165b9eda205..a5b4a1080afc 100644 --- a/compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala +++ b/compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala @@ -812,7 +812,7 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) { val rawFlags = if (sym.exists) sym.flags else mods.flags if (rawFlags.is(Param)) flagMask = flagMask &~ Given val flags = rawFlags & flagMask - val flagsText = if (flags.isEmpty) "" else keywordStr(flags.toString) + val flagsText = if (flags.isEmpty) "" else keywordStr(flags.flagStrings(nameString(sym.privateWithin.name)).mkString(" ")) val annotations = if (sym.exists) sym.annotations.filterNot(ann => dropAnnotForModText(ann.symbol)).map(_.tree) else mods.annotations.filterNot(tree => dropAnnotForModText(tree.symbol)) @@ -887,7 +887,7 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) { else { var flags = sym.flagsUNSAFE if (flags is TypeParam) flags = flags &~ Protected - Text((flags & PrintableFlags(sym.isType)).flagStrings map (flag => stringToText(keywordStr(flag))), " ") + Text((flags & PrintableFlags(sym.isType)).flagStrings(nameString(sym.privateWithin.name)) map (flag => stringToText(keywordStr(flag))), " ") } override def toText(denot: Denotation): Text = denot match { diff --git a/doc-tool/src/dotty/tools/dottydoc/model/factories.scala b/doc-tool/src/dotty/tools/dottydoc/model/factories.scala index c74fb3f1212b..51570014b7b6 100644 --- a/doc-tool/src/dotty/tools/dottydoc/model/factories.scala +++ b/doc-tool/src/dotty/tools/dottydoc/model/factories.scala @@ -21,7 +21,7 @@ object factories { def flags(t: Tree)(implicit ctx: Context): List[String] = (t.symbol.flags & (if (t.symbol.isType) TypeSourceModifierFlags else TermSourceModifierFlags)) - .flagStrings.toList + .flagStrings(t.symbol.privateWithin.name.show).toList .filter(_ != "") .filter(_ != "interface") .filter(_ != "case")