diff options
author | ilyas <ilyas@epfl.ch> | 2010-03-02 01:02:55 +0000 |
---|---|---|
committer | ilyas <ilyas@epfl.ch> | 2010-03-02 01:02:55 +0000 |
commit | dc9bb2630601b49d5cee326566854b96a61b412b (patch) | |
tree | 8e1399140f786dda30eb139eb8022d06497bcaed /src | |
parent | dae85e321aaf121d83e2b3824e47ab7c525ed2cd (diff) | |
download | scala-dc9bb2630601b49d5cee326566854b96a61b412b.tar.gz scala-dc9bb2630601b49d5cee326566854b96a61b412b.tar.bz2 scala-dc9bb2630601b49d5cee326566854b96a61b412b.zip |
#3128 fixed
Diffstat (limited to 'src')
-rw-r--r-- | src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala index 28b3094035..43ef9d2107 100644 --- a/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala +++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala @@ -95,11 +95,20 @@ class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) { } def printModifiers(symbol: Symbol) { + // print private access modifier + if (symbol.isPrivate) print("private ") + else if (symbol.isProtected) print("protected ") + else symbol match { + case sym: SymbolInfoSymbol => sym.symbolInfo.privateWithin match { + case Some(t: Symbol) => print("private[" + t.name +"] ") + case _ => + } + case _ => + } + if (symbol.isSealed) print("sealed ") if (symbol.isImplicit) print("implicit ") if (symbol.isFinal && !symbol.isInstanceOf[ObjectSymbol]) print("final ") - if (symbol.isPrivate) print("private ") - else if (symbol.isProtected) print("protected ") if (symbol.isOverride) print("override ") if (symbol.isAbstract) symbol match { case c@(_: ClassSymbol | _: ObjectSymbol) if !c.isTrait => print("abstract ") @@ -398,9 +407,15 @@ class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) { val pattern = Pattern.compile(_syms.keysIterator.foldLeft("")((x, y) => if (x == "") y else x + "|" + y)) val placeholderPattern = "_\\$(\\d)+" + private def stripPrivatePrefix(name: String) = { + val i = name.lastIndexOf("$$") + if (i > 0) name.substring(i + 2) else name + } + def processName(name: String) = { - val m = pattern.matcher(name) - var temp = name + val stripped = stripPrivatePrefix(name) + val m = pattern.matcher(stripped) + var temp = stripped while (m.find) { val key = m.group val re = "\\" + key |