summaryrefslogtreecommitdiff
path: root/src/scalap
diff options
context:
space:
mode:
authorilyas <ilyas@epfl.ch>2010-02-05 16:53:41 +0000
committerilyas <ilyas@epfl.ch>2010-02-05 16:53:41 +0000
commitf203f3adfd63936ccfa71d61608e95f05ae800b0 (patch)
tree25d258ba2fd35fec7bb53fdbe5ca98698983cda7 /src/scalap
parent96dc0e44e8f1610463e38c05f647987c336b5093 (diff)
downloadscala-f203f3adfd63936ccfa71d61608e95f05ae800b0.tar.gz
scala-f203f3adfd63936ccfa71d61608e95f05ae800b0.tar.bz2
scala-f203f3adfd63936ccfa71d61608e95f05ae800b0.zip
some scalap tweaks
Diffstat (limited to 'src/scalap')
-rw-r--r--src/scalap/scala/tools/scalap/Main.scala3
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala50
2 files changed, 31 insertions, 22 deletions
diff --git a/src/scalap/scala/tools/scalap/Main.scala b/src/scalap/scala/tools/scalap/Main.scala
index 338143f671..28e48a34d0 100644
--- a/src/scalap/scala/tools/scalap/Main.scala
+++ b/src/scalap/scala/tools/scalap/Main.scala
@@ -33,7 +33,8 @@ object Main {
*/
def usage {
Console.println("usage: scalap {<option>} <name>")
- Console.println("where <option> is")
+ Console.println("where <name> is fully-qualified class name or <package_name>.package for package objects")
+ Console.println("and <option> is")
Console.println(" -private print private definitions")
Console.println(" -verbose print out additional information")
Console.println(" -version print out the version number of scalap")
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 da268f4e44..76c59d837f 100644
--- a/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala
@@ -16,6 +16,7 @@ import java.io.{PrintStream, ByteArrayOutputStream}
import java.util.regex.Pattern
import scala.tools.scalap.scalax.util.StringUtil
+import reflect.NameTransformer
class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) {
import stream._
@@ -98,25 +99,29 @@ class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) {
private def refinementClass(c: ClassSymbol) = c.name == "<refinement>"
def printClass(level: Int, c: ClassSymbol) {
- printModifiers(c)
- val defaultConstructor = if (c.isCase) getPrinterByConstructor(c) else ""
- if (c.isTrait) print("trait ") else print("class ")
- print(processName(c.name))
- val it = c.infoType
- val classType = it match {
- case PolyType(typeRef, symbols) => PolyTypeWithCons(typeRef, symbols, defaultConstructor)
- case _ => it
- }
- printType(classType)
- print(" {")
- //Print class selftype
- c.selfType match {
- case Some(t: Type) => print("\n"); print(" this : " + toString(t) + " =>")
- case None =>
+ if (c.name != "<local child>"/*scala.tools.nsc.symtab.StdNames.LOCALCHILD.toString()*/) {
+ print("\n")
+ } else {
+ printModifiers(c)
+ val defaultConstructor = if (c.isCase) getPrinterByConstructor(c) else ""
+ if (c.isTrait) print("trait ") else print("class ")
+ print(processName(c.name))
+ val it = c.infoType
+ val classType = it match {
+ case PolyType(typeRef, symbols) => PolyTypeWithCons(typeRef, symbols, defaultConstructor)
+ case _ => it
+ }
+ printType(classType)
+ print(" {")
+ //Print class selftype
+ c.selfType match {
+ case Some(t: Type) => print("\n"); print(" this : " + toString(t) + " =>")
+ case None =>
+ }
+ print("\n")
+ printChildren(level, c)
+ printWithIndent(level, "}\n")
}
- print("\n")
- printChildren(level, c)
- printWithIndent(level, "}\n")
}
def getPrinterByConstructor(c: ClassSymbol) = {
@@ -347,9 +352,11 @@ class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) {
if (typeArgs.isEmpty) ""
else typeArgs.map(toString).map(StringUtil.trimStart(_, "=> ")).mkString("[", ", ", "]")
- def typeParamString(params: Seq[Symbol]): String =
- if (params.isEmpty) ""
+ def typeParamString(params: Seq[Symbol]): String = {
+ val res = if (params.isEmpty) ""
else params.map(toString).mkString("[", ", ", "]")
+ res.replace(" >: scala.Nothing", "").replace(" <: scala.Any", "")
+ }
val _syms = Map("\\$bar" -> "|", "\\$tilde" -> "~",
"\\$bang" -> "!", "\\$up" -> "^", "\\$plus" -> "+",
@@ -368,7 +375,8 @@ class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) {
val re = "\\" + key
temp = temp.replaceAll(re, _syms(re))
}
- temp.replaceAll(placeholderPattern, "_")
+ val result = temp.replaceAll(placeholderPattern, "_")
+ NameTransformer.decode(result)
}
}