summaryrefslogtreecommitdiff
path: root/src/scalap
diff options
context:
space:
mode:
authorilyas <ilyas@epfl.ch>2010-03-02 01:02:55 +0000
committerilyas <ilyas@epfl.ch>2010-03-02 01:02:55 +0000
commitdc9bb2630601b49d5cee326566854b96a61b412b (patch)
tree8e1399140f786dda30eb139eb8022d06497bcaed /src/scalap
parentdae85e321aaf121d83e2b3824e47ab7c525ed2cd (diff)
downloadscala-dc9bb2630601b49d5cee326566854b96a61b412b.tar.gz
scala-dc9bb2630601b49d5cee326566854b96a61b412b.tar.bz2
scala-dc9bb2630601b49d5cee326566854b96a61b412b.zip
#3128 fixed
Diffstat (limited to 'src/scalap')
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala23
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