summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Zenger <mzenger@gmail.com>2004-02-11 14:01:45 +0000
committerMatthias Zenger <mzenger@gmail.com>2004-02-11 14:01:45 +0000
commita10fed035d6aa6544bad270163891594d3a577ea (patch)
tree618f5a572ed618b393f9d3a98a32eafa9cc47d93
parent3fedc714dbf8a1c846f057fe23be66de5ced0512 (diff)
downloadscala-a10fed035d6aa6544bad270163891594d3a577ea.tar.gz
scala-a10fed035d6aa6544bad270163891594d3a577ea.tar.bz2
scala-a10fed035d6aa6544bad270163891594d3a577ea.zip
- Removed tabs.
-rw-r--r--sources/scala/tools/scalap/Flags.scala14
-rw-r--r--sources/scala/tools/scalap/JavaWriter.scala366
-rw-r--r--sources/scala/tools/scalap/Main.scala168
-rw-r--r--sources/scala/tools/scalap/MetaParser.scala332
-rw-r--r--sources/scala/tools/scalap/ScalaWriter.scala46
5 files changed, 463 insertions, 463 deletions
diff --git a/sources/scala/tools/scalap/Flags.scala b/sources/scala/tools/scalap/Flags.scala
index df44d0e576..4a70113e02 100644
--- a/sources/scala/tools/scalap/Flags.scala
+++ b/sources/scala/tools/scalap/Flags.scala
@@ -11,8 +11,8 @@ package scala.tools.scalap;
/** Encoding of modifiers for Scala definitions.
*
- * @author Matthias Zenger
- * @version 1.0, 10/02/2004
+ * @author Matthias Zenger
+ * @version 1.0, 10/02/2004
*/
object Flags {
@@ -47,12 +47,12 @@ object Flags {
final val COVAR = 0x40000000; // a covariant type variable
final val CONTRAVAR = 0x80000000; // a contravariant type variable
- final val TF_STAR = 4; // a repeated type
- final val TF_DEF = 8; // a 'def' type
+ final val TF_STAR = 4; // a repeated type
+ final val TF_DEF = 8; // a 'def' type
- /** Check if a flag is present in the given flag set.
- */
- def is(flag: Int, flagset: Int): Boolean = (flag & flagset) != 0;
+ /** Check if a flag is present in the given flag set.
+ */
+ def is(flag: Int, flagset: Int): Boolean = (flag & flagset) != 0;
/** Convert a set of modifiers into a readable string.
*/
diff --git a/sources/scala/tools/scalap/JavaWriter.scala b/sources/scala/tools/scalap/JavaWriter.scala
index 8c3a61db1c..7c14b9d9e4 100644
--- a/sources/scala/tools/scalap/JavaWriter.scala
+++ b/sources/scala/tools/scalap/JavaWriter.scala
@@ -13,13 +13,13 @@ import java.io._;
class JavaWriter(classfile: Classfile, writer: Writer) extends CodeWriter(writer) {
- val cf = classfile;
+ val cf = classfile;
- def flagsToStr(clazz: Boolean, flags: Int) = {
- val buffer = new StringBuffer();
+ def flagsToStr(clazz: Boolean, flags: Int) = {
+ val buffer = new StringBuffer();
var x: StringBuffer = buffer;
- if (((flags & 0x0007) == 0) &&
- ((flags & 0x0002) != 0))
+ if (((flags & 0x0007) == 0) &&
+ ((flags & 0x0002) != 0))
x = buffer.append("private ");
if ((flags & 0x0004) != 0)
x = buffer.append("protected ");
@@ -29,182 +29,182 @@ class JavaWriter(classfile: Classfile, writer: Writer) extends CodeWriter(writer
x = if (clazz) buffer.append("abstract ")
else buffer.append("/*deferred*/ ");
buffer.toString()
- }
-
- def nameToClass(str: String) = {
- val res = Names.decode(str.replace('/', '.'));
- if (res == "java.lang.Object") "scala.AnyRef" else res
- }
-
- def nameToSimpleClass(str: String) =
- Names.decode(str.substring(str.lastIndexOf('/') + 1));
-
- def nameToPackage(str: String) =
- Names.decode(str.substring(0, str.lastIndexOf('/')).replace('/', '.'));
-
- def sigToType(str: String): String =
- sigToType(str, 0)._1;
-
- def sigToType(str: String, i: Int): Pair[String, Int] = str.charAt(i) match {
- case 'B' => Pair("scala.Byte", i + 1)
- case 'C' => Pair("scala.Char", i + 1)
- case 'D' => Pair("scala.Double", i + 1)
- case 'F' => Pair("scala.Float", i + 1)
- case 'I' => Pair("scala.Int", i + 1)
- case 'J' => Pair("scala.Long", i + 1)
- case 'S' => Pair("scala.Short", i + 1)
- case 'V' => Pair("scala.Unit", i + 1)
- case 'Z' => Pair("scala.Boolean", i + 1)
- case 'L' => val j = str.indexOf(';', i);
- Pair(nameToClass(str.substring(i + 1, j)), j + 1)
- case '[' => val Pair(tpe, j) = sigToType(str, i + 1);
- Pair("scala.Array[" + tpe + "]", j)
- case '(' => val Pair(tpe, j) = sigToType0(str, i + 1);
- Pair("(" + tpe, j)
- case ')' => val Pair(tpe, j) = sigToType(str, i + 1);
- Pair("): " + tpe, j)
- }
-
- def sigToType0(str: String, i: Int): Pair[String, Int] =
- if (str.charAt(i) == ')')
- sigToType(str, i)
- else {
- val Pair(tpe, j) = sigToType(str, i);
- if (str.charAt(j) == ')') {
- val Pair(rest, k) = sigToType(str, j);
- Pair(tpe + rest, k)
- } else {
- val Pair(rest, k) = sigToType0(str, j);
- Pair(tpe + ", " + rest, k)
- }
- };
-
- def getName(n: Int): String = cf.pool(n) match {
- case cf.UTF8(str) => str;
- case cf.StringConst(m) => getName(m);
- case cf.ClassRef(m) => getName(m);
- case x => "<error>"
- }
-
- def getClassName(n: Int): String = nameToClass(getName(n));
-
- def getSimpleClassName(n: Int): String = nameToSimpleClass(getName(n));
-
- def getPackage(n: Int): String = nameToPackage(getName(n));
-
- def getType(n: Int): String = sigToType(getName(n));
-
- def isStatic(flags: Int) = (flags & 0x0008) != 0;
-
- def isInterface(flags: Int) = (flags & 0x0200) != 0;
-
- def isConstr(name: String) = (name == "<init>");
-
- def printField(flags: Int, name: Int, tpe: Int, attribs: List[cf.Attribute]) = {
- print(flagsToStr(false, flags));
- if ((flags & 0x0010) != 0)
- print("val " + Names.decode(getName(name)));
- else
- print("final var " + Names.decode(getName(name)));
- print(": " + getType(tpe) + ";").newline;
- }
-
- def printMethod(flags: Int, name: Int, tpe: Int, attribs: List[cf.Attribute]) = {
- if (getName(name) == "<init>")
- print(flagsToStr(false, flags));
- attribs find {
- case cf.Attribute(name, _) => getName(name) == "JacoMeta"
- } match {
- case Some(cf.Attribute(_, data)) =>
- val mp = new MetaParser(getName(
- ((data(0) & 0xff) << 8) + (data(1) & 0xff)).trim());
- mp.parse match {
- case None =>
- if (getName(name) == "<init>") {
- print("def this" + getType(tpe) + ";").newline;
- } else {
- print("def " + Names.decode(getName(name)));
- print(getType(tpe) + ";").newline;
- }
- case Some(str) =>
- if (getName(name) == "<init>")
- print("def this" + str + ";").newline;
- else
- print("def " + Names.decode(getName(name)) + str + ";").newline;
- }
- case None =>
- if (getName(name) == "<init>") {
- print("def this" + getType(tpe) + ";").newline;
- } else {
- print("def " + Names.decode(getName(name)));
- print(getType(tpe) + ";").newline;
- }
- }
- }
-
- def printClassHeader = {
- if (isInterface(cf.flags)) {
- print("trait " + getSimpleClassName(cf.classname));
- } else {
- print("class " + getSimpleClassName(cf.classname));
- if (cf.pool(cf.superclass) != null)
- print(" extends " + getClassName(cf.superclass));
- }
- cf.interfaces foreach {
- n => print(" with " + getClassName(n));
- }
- }
-
- def printClass = {
- val pck = getPackage(cf.classname);
- if (pck.length() > 0)
- println("package " + pck + ";");
- print(flagsToStr(true, cf.flags));
- cf.attribs find {
- case cf.Attribute(name, _) => getName(name) == "JacoMeta"
- } match {
- case None =>
- printClassHeader;
- case Some(cf.Attribute(_, data)) =>
- val mp = new MetaParser(getName(
- ((data(0) & 0xff) << 8) + (data(1) & 0xff)).trim());
- mp.parse match {
- case None => printClassHeader;
- case Some(str) =>
- if (isInterface(cf.flags))
- print("trait " + getSimpleClassName(cf.classname) + str);
- else
- print("class " + getSimpleClassName(cf.classname) + str);
- }
- }
- var statics: List[cf.Member] = Nil;
- print(" {").indent.newline;
- cf.fields foreach {
- case m@cf.Member(_, flags, name, tpe, attribs) =>
- if (isStatic(flags))
- statics = m :: statics;
- else
- printField(flags, name, tpe, attribs)
- }
- cf.methods foreach {
- case m@cf.Member(_, flags, name, tpe, attribs) =>
- if (isStatic(flags))
- statics = m :: statics;
- else
- printMethod(flags, name, tpe, attribs)
- }
- undent.print("}").newline;
- if (!statics.isEmpty) {
- print("object " + getSimpleClassName(cf.classname) + " {");
- indent.newline;
- statics foreach {
- case cf.Member(true, flags, name, tpe, attribs) =>
- printField(flags, name, tpe, attribs)
- case cf.Member(false, flags, name, tpe, attribs) =>
- if (getName(name) != "<clinit>")
- printMethod(flags, name, tpe, attribs)
- }
- undent.print("}").newline
- }
- }
+ }
+
+ def nameToClass(str: String) = {
+ val res = Names.decode(str.replace('/', '.'));
+ if (res == "java.lang.Object") "scala.AnyRef" else res
+ }
+
+ def nameToSimpleClass(str: String) =
+ Names.decode(str.substring(str.lastIndexOf('/') + 1));
+
+ def nameToPackage(str: String) =
+ Names.decode(str.substring(0, str.lastIndexOf('/')).replace('/', '.'));
+
+ def sigToType(str: String): String =
+ sigToType(str, 0)._1;
+
+ def sigToType(str: String, i: Int): Pair[String, Int] = str.charAt(i) match {
+ case 'B' => Pair("scala.Byte", i + 1)
+ case 'C' => Pair("scala.Char", i + 1)
+ case 'D' => Pair("scala.Double", i + 1)
+ case 'F' => Pair("scala.Float", i + 1)
+ case 'I' => Pair("scala.Int", i + 1)
+ case 'J' => Pair("scala.Long", i + 1)
+ case 'S' => Pair("scala.Short", i + 1)
+ case 'V' => Pair("scala.Unit", i + 1)
+ case 'Z' => Pair("scala.Boolean", i + 1)
+ case 'L' => val j = str.indexOf(';', i);
+ Pair(nameToClass(str.substring(i + 1, j)), j + 1)
+ case '[' => val Pair(tpe, j) = sigToType(str, i + 1);
+ Pair("scala.Array[" + tpe + "]", j)
+ case '(' => val Pair(tpe, j) = sigToType0(str, i + 1);
+ Pair("(" + tpe, j)
+ case ')' => val Pair(tpe, j) = sigToType(str, i + 1);
+ Pair("): " + tpe, j)
+ }
+
+ def sigToType0(str: String, i: Int): Pair[String, Int] =
+ if (str.charAt(i) == ')')
+ sigToType(str, i)
+ else {
+ val Pair(tpe, j) = sigToType(str, i);
+ if (str.charAt(j) == ')') {
+ val Pair(rest, k) = sigToType(str, j);
+ Pair(tpe + rest, k)
+ } else {
+ val Pair(rest, k) = sigToType0(str, j);
+ Pair(tpe + ", " + rest, k)
+ }
+ };
+
+ def getName(n: Int): String = cf.pool(n) match {
+ case cf.UTF8(str) => str;
+ case cf.StringConst(m) => getName(m);
+ case cf.ClassRef(m) => getName(m);
+ case x => "<error>"
+ }
+
+ def getClassName(n: Int): String = nameToClass(getName(n));
+
+ def getSimpleClassName(n: Int): String = nameToSimpleClass(getName(n));
+
+ def getPackage(n: Int): String = nameToPackage(getName(n));
+
+ def getType(n: Int): String = sigToType(getName(n));
+
+ def isStatic(flags: Int) = (flags & 0x0008) != 0;
+
+ def isInterface(flags: Int) = (flags & 0x0200) != 0;
+
+ def isConstr(name: String) = (name == "<init>");
+
+ def printField(flags: Int, name: Int, tpe: Int, attribs: List[cf.Attribute]) = {
+ print(flagsToStr(false, flags));
+ if ((flags & 0x0010) != 0)
+ print("val " + Names.decode(getName(name)));
+ else
+ print("final var " + Names.decode(getName(name)));
+ print(": " + getType(tpe) + ";").newline;
+ }
+
+ def printMethod(flags: Int, name: Int, tpe: Int, attribs: List[cf.Attribute]) = {
+ if (getName(name) == "<init>")
+ print(flagsToStr(false, flags));
+ attribs find {
+ case cf.Attribute(name, _) => getName(name) == "JacoMeta"
+ } match {
+ case Some(cf.Attribute(_, data)) =>
+ val mp = new MetaParser(getName(
+ ((data(0) & 0xff) << 8) + (data(1) & 0xff)).trim());
+ mp.parse match {
+ case None =>
+ if (getName(name) == "<init>") {
+ print("def this" + getType(tpe) + ";").newline;
+ } else {
+ print("def " + Names.decode(getName(name)));
+ print(getType(tpe) + ";").newline;
+ }
+ case Some(str) =>
+ if (getName(name) == "<init>")
+ print("def this" + str + ";").newline;
+ else
+ print("def " + Names.decode(getName(name)) + str + ";").newline;
+ }
+ case None =>
+ if (getName(name) == "<init>") {
+ print("def this" + getType(tpe) + ";").newline;
+ } else {
+ print("def " + Names.decode(getName(name)));
+ print(getType(tpe) + ";").newline;
+ }
+ }
+ }
+
+ def printClassHeader = {
+ if (isInterface(cf.flags)) {
+ print("trait " + getSimpleClassName(cf.classname));
+ } else {
+ print("class " + getSimpleClassName(cf.classname));
+ if (cf.pool(cf.superclass) != null)
+ print(" extends " + getClassName(cf.superclass));
+ }
+ cf.interfaces foreach {
+ n => print(" with " + getClassName(n));
+ }
+ }
+
+ def printClass = {
+ val pck = getPackage(cf.classname);
+ if (pck.length() > 0)
+ println("package " + pck + ";");
+ print(flagsToStr(true, cf.flags));
+ cf.attribs find {
+ case cf.Attribute(name, _) => getName(name) == "JacoMeta"
+ } match {
+ case None =>
+ printClassHeader;
+ case Some(cf.Attribute(_, data)) =>
+ val mp = new MetaParser(getName(
+ ((data(0) & 0xff) << 8) + (data(1) & 0xff)).trim());
+ mp.parse match {
+ case None => printClassHeader;
+ case Some(str) =>
+ if (isInterface(cf.flags))
+ print("trait " + getSimpleClassName(cf.classname) + str);
+ else
+ print("class " + getSimpleClassName(cf.classname) + str);
+ }
+ }
+ var statics: List[cf.Member] = Nil;
+ print(" {").indent.newline;
+ cf.fields foreach {
+ case m@cf.Member(_, flags, name, tpe, attribs) =>
+ if (isStatic(flags))
+ statics = m :: statics;
+ else
+ printField(flags, name, tpe, attribs)
+ }
+ cf.methods foreach {
+ case m@cf.Member(_, flags, name, tpe, attribs) =>
+ if (isStatic(flags))
+ statics = m :: statics;
+ else
+ printMethod(flags, name, tpe, attribs)
+ }
+ undent.print("}").newline;
+ if (!statics.isEmpty) {
+ print("object " + getSimpleClassName(cf.classname) + " {");
+ indent.newline;
+ statics foreach {
+ case cf.Member(true, flags, name, tpe, attribs) =>
+ printField(flags, name, tpe, attribs)
+ case cf.Member(false, flags, name, tpe, attribs) =>
+ if (getName(name) != "<clinit>")
+ printMethod(flags, name, tpe, attribs)
+ }
+ undent.print("}").newline
+ }
+ }
}
diff --git a/sources/scala/tools/scalap/Main.scala b/sources/scala/tools/scalap/Main.scala
index 5ca1f8e06b..bd83c41c9e 100644
--- a/sources/scala/tools/scalap/Main.scala
+++ b/sources/scala/tools/scalap/Main.scala
@@ -13,8 +13,8 @@ import java.io._;
/** The main object used to execute scalap on the command-line.
*
- * @author Matthias Zenger
- * @version 1.0, 10/02/2004
+ * @author Matthias Zenger
+ * @version 1.0, 10/02/2004
*/
object Main {
@@ -43,107 +43,107 @@ object Main {
* class denoted by 'classname'.
*/
def process(args: Arguments, path: ClassPath)(classname: String): Unit = {
- // find the classfile
- val file = path.openClass(Names.encode(
- if (classname == "scala.AnyRef") "java.lang.Object"
- else classname));
- // if the classfile exists...
- if (file.exists) {
- if (verbose)
- Console.println(Console.BOLD + "FILENAME" + Console.RESET +
- " = " + file.getPath);
- // construct a reader for the classfile content
- val reader = new ByteArrayReader(file.content);
- // parse the classfile
- val clazz = new Classfile(reader);
- // check if there is a Scala signature attribute
- val attrib = clazz.attribs.find(a => a.toString() == "ScalaSignature");
- attrib match {
- // if the attribute is found, we have to extract the scope
- // from the attribute
- case Some(a) =>
- // parse the Scala attribute
- val info = new ScalaAttribute(a.reader);
- val symtab = new EntityTable(info);
- // construct a new output stream writer
- val out = new OutputStreamWriter(System.out);
- val writer = new ScalaWriter(args, out);
- // output all elements of the scope
- symtab.root.elements foreach (
- sym => { writer.printSymbol(sym);
- writer.println*; });
- out.flush();
- // It must be a Java class
- case None =>
- // construct a new output stream writer
- val out = new OutputStreamWriter(System.out);
- val writer = new JavaWriter(clazz, out);
- // print the class
- writer.printClass;
- out.flush();
- }
- // if the class corresponds to the artificial class scala.Any...
- } else if (classname == "scala.Any") {
- Console.println("package scala;");
- Console.println("class Any {");
- Console.println(" def eq(scala.Any): scala.Boolean;");
- Console.println(" final def ==(scala.Any): scala.Boolean;");
- Console.println(" final def !=(scala.Any): scala.Boolean;");
- Console.println(" def equals(scala.Any): scala.Boolean;");
- Console.println(" def hashCode(): scala.Int;");
- Console.println(" def toString(): java.lang.String;");
- Console.println(" final def isInstanceOf[T]: scala.Boolean;");
- Console.println(" final def asInstanceOf[T]: T;");
- Console.println(" def match[S, T](f: S => T): T;");
- Console.println("}");
- // explain that scala.All cannot be printed...
- } else if (classname == "scala.All") {
- Console.println("Type scala.All is artificial; " +
- "it is a subtype of all types.");
- // explain that scala.AllRef cannot be printed...
- } else if (classname == "scala.AllRef") {
- Console.println("Type scala.AllRef is artificial; it is a " +
- "subtype of all subtypes of scala.AnyRef.");
- // at this point we are sure that the classfile is not available...
- } else
- Console.println("class/object not found.");
+ // find the classfile
+ val file = path.openClass(Names.encode(
+ if (classname == "scala.AnyRef") "java.lang.Object"
+ else classname));
+ // if the classfile exists...
+ if (file.exists) {
+ if (verbose)
+ Console.println(Console.BOLD + "FILENAME" + Console.RESET +
+ " = " + file.getPath);
+ // construct a reader for the classfile content
+ val reader = new ByteArrayReader(file.content);
+ // parse the classfile
+ val clazz = new Classfile(reader);
+ // check if there is a Scala signature attribute
+ val attrib = clazz.attribs.find(a => a.toString() == "ScalaSignature");
+ attrib match {
+ // if the attribute is found, we have to extract the scope
+ // from the attribute
+ case Some(a) =>
+ // parse the Scala attribute
+ val info = new ScalaAttribute(a.reader);
+ val symtab = new EntityTable(info);
+ // construct a new output stream writer
+ val out = new OutputStreamWriter(System.out);
+ val writer = new ScalaWriter(args, out);
+ // output all elements of the scope
+ symtab.root.elements foreach (
+ sym => { writer.printSymbol(sym);
+ writer.println*; });
+ out.flush();
+ // It must be a Java class
+ case None =>
+ // construct a new output stream writer
+ val out = new OutputStreamWriter(System.out);
+ val writer = new JavaWriter(clazz, out);
+ // print the class
+ writer.printClass;
+ out.flush();
+ }
+ // if the class corresponds to the artificial class scala.Any...
+ } else if (classname == "scala.Any") {
+ Console.println("package scala;");
+ Console.println("class Any {");
+ Console.println(" def eq(scala.Any): scala.Boolean;");
+ Console.println(" final def ==(scala.Any): scala.Boolean;");
+ Console.println(" final def !=(scala.Any): scala.Boolean;");
+ Console.println(" def equals(scala.Any): scala.Boolean;");
+ Console.println(" def hashCode(): scala.Int;");
+ Console.println(" def toString(): java.lang.String;");
+ Console.println(" final def isInstanceOf[T]: scala.Boolean;");
+ Console.println(" final def asInstanceOf[T]: T;");
+ Console.println(" def match[S, T](f: S => T): T;");
+ Console.println("}");
+ // explain that scala.All cannot be printed...
+ } else if (classname == "scala.All") {
+ Console.println("Type scala.All is artificial; " +
+ "it is a subtype of all types.");
+ // explain that scala.AllRef cannot be printed...
+ } else if (classname == "scala.AllRef") {
+ Console.println("Type scala.AllRef is artificial; it is a " +
+ "subtype of all subtypes of scala.AnyRef.");
+ // at this point we are sure that the classfile is not available...
+ } else
+ Console.println("class/object not found.");
}
/** The main method of this object.
*/
def main(args: Array[String]) = {
- // print usage information if there is no command-line argument
+ // print usage information if there is no command-line argument
if (args.length == 0)
usage;
// otherwise parse the arguments...
else {
- val arguments = Arguments.Parser('-')
- .withOption("-private")
- .withOption("-verbose")
- .withOption("-version")
- .withOption("-help")
- .withOptionalArg("-classpath")
- .withOptionalArg("-cp")
+ val arguments = Arguments.Parser('-')
+ .withOption("-private")
+ .withOption("-verbose")
+ .withOption("-version")
+ .withOption("-help")
+ .withOptionalArg("-classpath")
+ .withOptionalArg("-cp")
.parse(args);
if (arguments contains "-version")
Console.println("scalap " + VERSION);
if (arguments contains "-help")
- usage;
+ usage;
verbose = arguments contains "-verbose";
// construct a custom class path
val path = arguments.getArgument("-classpath") match {
- case None => arguments.getArgument("-cp") match {
- case None => new ClassPath
- case Some(path) => new ClassPath { override val classPath = path }
- }
- case Some(path) => new ClassPath { override val classPath = path }
+ case None => arguments.getArgument("-cp") match {
+ case None => new ClassPath
+ case Some(path) => new ClassPath { override val classPath = path }
+ }
+ case Some(path) => new ClassPath { override val classPath = path }
}
// print the classpath if output is verbose
if (verbose)
- Console.println(Console.BOLD + "CLASSPATH" + Console.RESET +
- " = " + path);
- // process all given classes
- arguments.getOthers.foreach(process(arguments, path));
+ Console.println(Console.BOLD + "CLASSPATH" + Console.RESET +
+ " = " + path);
+ // process all given classes
+ arguments.getOthers.foreach(process(arguments, path));
}
}
}
diff --git a/sources/scala/tools/scalap/MetaParser.scala b/sources/scala/tools/scalap/MetaParser.scala
index ed9034904c..cd691b1991 100644
--- a/sources/scala/tools/scalap/MetaParser.scala
+++ b/sources/scala/tools/scalap/MetaParser.scala
@@ -16,178 +16,178 @@ import java.util._;
* generated by pico.
*/
class MetaParser(meta: String) {
- val scanner = new StringTokenizer(meta, "()[], \t<;", true);
- var token: String = _;
- val res = new StringBuffer;
+ val scanner = new StringTokenizer(meta, "()[], \t<;", true);
+ var token: String = _;
+ val res = new StringBuffer;
- private def nextToken: String = {
- do {
- token = scanner.nextToken().trim();
- } while (token.length() == 0);
- token
- }
+ private def nextToken: String = {
+ do {
+ token = scanner.nextToken().trim();
+ } while (token.length() == 0);
+ token
+ }
- protected def parseType: Unit = {
- if (token.startsWith("?"))
- res.append(token.substring(1));
- else
- res.append(token);
- nextToken;
- if (token == "[") {
- do {
- if (token == ",")
- res.append(", ");
- else
- res.append("[");
- nextToken;
- parseType;
- } while (token == ",");
- nextToken;
- res.append("]");
- }
- }
+ protected def parseType: Unit = {
+ if (token.startsWith("?"))
+ res.append(token.substring(1));
+ else
+ res.append(token);
+ nextToken;
+ if (token == "[") {
+ do {
+ if (token == ",")
+ res.append(", ");
+ else
+ res.append("[");
+ nextToken;
+ parseType;
+ } while (token == ",");
+ nextToken;
+ res.append("]");
+ }
+ }
- def parse: Option[String] =
- if (scanner.hasMoreTokens()) {
- nextToken;
- try {
- if (!scanner.hasMoreTokens())
- None
- else if (token == "class")
- Some(parseMetaClass);
- else if (token == "method")
- Some(parseMetaMethod);
- else if (token == "field")
- Some(parseMetaField);
- else if (token == "constr")
- Some(parseConstrField);
- else
- None;
- } catch { case _ =>
- None;
- }
- } else
- None;
+ def parse: Option[String] =
+ if (scanner.hasMoreTokens()) {
+ nextToken;
+ try {
+ if (!scanner.hasMoreTokens())
+ None
+ else if (token == "class")
+ Some(parseMetaClass);
+ else if (token == "method")
+ Some(parseMetaMethod);
+ else if (token == "field")
+ Some(parseMetaField);
+ else if (token == "constr")
+ Some(parseConstrField);
+ else
+ None;
+ } catch { case _ =>
+ None;
+ }
+ } else
+ None;
- protected def parseMetaClass: String = {
- nextToken;
- if (token == "[") {
- do {
- if (token == "[")
- res.append('[');
- else
- res.append(", ");
- nextToken;
- if (token == "+") {
- nextToken;
- res.append('+');
- } else if (token == "-") {
- nextToken;
- res.append('-');
- }
- res.append(token.substring(1));
- nextToken;
- if (token == "<") {
- nextToken;
- res.append(" <: ");
- parseType;
- }
- } while (token == ",");
- nextToken;
- res.append("]");
- }
- if (token == "extends") {
- do {
- if (token == "extends")
- res.append(" extends ");
- else
- res.append(" with ");
- nextToken;
- parseType;
- } while (token == "with");
- }
- res.toString();
- }
+ protected def parseMetaClass: String = {
+ nextToken;
+ if (token == "[") {
+ do {
+ if (token == "[")
+ res.append('[');
+ else
+ res.append(", ");
+ nextToken;
+ if (token == "+") {
+ nextToken;
+ res.append('+');
+ } else if (token == "-") {
+ nextToken;
+ res.append('-');
+ }
+ res.append(token.substring(1));
+ nextToken;
+ if (token == "<") {
+ nextToken;
+ res.append(" <: ");
+ parseType;
+ }
+ } while (token == ",");
+ nextToken;
+ res.append("]");
+ }
+ if (token == "extends") {
+ do {
+ if (token == "extends")
+ res.append(" extends ");
+ else
+ res.append(" with ");
+ nextToken;
+ parseType;
+ } while (token == "with");
+ }
+ res.toString();
+ }
- protected def parseMetaMethod: String = {
- nextToken;
- if (token == "[") {
- nextToken;
- if (token == "]") {
- nextToken;
- } else {
- var loop = true;
- res.append("[");
- while (loop) {
- res.append(token.substring(1));
- nextToken;
- if (token == "<") {
- nextToken;
- res.append(" <: ");
- parseType;
- }
- if (token == ",") {
- nextToken;
- res.append(", ");
- } else
- loop = false;
- }
- nextToken;
- res.append("]");
- }
- }
- if (token == "(") {
- do {
- if (token == ",") {
- nextToken;
- if (token != ")")
- res.append(", ");
- } else {
- nextToken;
- res.append("(");
- }
- if (token != ")") {
- if (token == "def") {
- nextToken;
- res.append("def ");
- }
- parseType;
- }
- } while (token == ",");
- nextToken;
- res.append("): ");
- parseType;
- } else {
- res.append(": ");
- parseType;
- }
- res.toString();
- }
+ protected def parseMetaMethod: String = {
+ nextToken;
+ if (token == "[") {
+ nextToken;
+ if (token == "]") {
+ nextToken;
+ } else {
+ var loop = true;
+ res.append("[");
+ while (loop) {
+ res.append(token.substring(1));
+ nextToken;
+ if (token == "<") {
+ nextToken;
+ res.append(" <: ");
+ parseType;
+ }
+ if (token == ",") {
+ nextToken;
+ res.append(", ");
+ } else
+ loop = false;
+ }
+ nextToken;
+ res.append("]");
+ }
+ }
+ if (token == "(") {
+ do {
+ if (token == ",") {
+ nextToken;
+ if (token != ")")
+ res.append(", ");
+ } else {
+ nextToken;
+ res.append("(");
+ }
+ if (token != ")") {
+ if (token == "def") {
+ nextToken;
+ res.append("def ");
+ }
+ parseType;
+ }
+ } while (token == ",");
+ nextToken;
+ res.append("): ");
+ parseType;
+ } else {
+ res.append(": ");
+ parseType;
+ }
+ res.toString();
+ }
- protected def parseMetaField: String = {
- nextToken;
- res.append(": ");
- parseType;
- res.toString();
- }
+ protected def parseMetaField: String = {
+ nextToken;
+ res.append(": ");
+ parseType;
+ res.toString();
+ }
- protected def parseConstrField: String = {
- nextToken;
- if (token == "(") {
- do {
- if (token == "(")
- res.append("(");
- else
- res.append(", ");
- nextToken;
- if (token != ")")
- parseType;
- } while (token == ",");
- nextToken;
- res.append(")");
- } else {
+ protected def parseConstrField: String = {
+ nextToken;
+ if (token == "(") {
+ do {
+ if (token == "(")
+ res.append("(");
+ else
+ res.append(", ");
+ nextToken;
+ if (token != ")")
+ parseType;
+ } while (token == ",");
+ nextToken;
+ res.append(")");
+ } else {
- }
- res.toString();
- }
+ }
+ res.toString();
+ }
}
diff --git a/sources/scala/tools/scalap/ScalaWriter.scala b/sources/scala/tools/scalap/ScalaWriter.scala
index 4a7b14ddb3..35ba1bffb8 100644
--- a/sources/scala/tools/scalap/ScalaWriter.scala
+++ b/sources/scala/tools/scalap/ScalaWriter.scala
@@ -69,8 +69,8 @@ class ScalaWriter(args: Arguments, writer: Writer) extends CodeWriter(writer) {
if (!tvars.isEmpty) {
printTVar(tvars.head);
tvars.tail foreach { sym =>
- print(", ");
- printTVar(sym);
+ print(", ");
+ printTVar(sym);
}
}
print("]");
@@ -85,18 +85,18 @@ class ScalaWriter(args: Arguments, writer: Writer) extends CodeWriter(writer) {
var first = true;
scope.elements foreach (
sym => { sym match {
- case s: ValSymbol if
- (s.tpe.isInstanceOf[OverloadedType] ||
+ case s: ValSymbol if
+ (s.tpe.isInstanceOf[OverloadedType] ||
(Flags.is(Flags.CASEACCESSOR, s.flags) &&
!s.tpe.isInstanceOf[PolyType])) =>
case _ =>
- if (!ignoreDef(sym)) {
- if (first) print(" {").indent else print(";");
- first = false;
- newline;
- printSymbol(sym);
- }
- }});
+ if (!ignoreDef(sym)) {
+ if (first) print(" {").indent else print(";");
+ first = false;
+ newline;
+ printSymbol(sym);
+ }
+ }});
if (!first)
newline.undent.print("}")
}
@@ -188,8 +188,8 @@ class ScalaWriter(args: Arguments, writer: Writer) extends CodeWriter(writer) {
printType0(tpe);
print(".")
}
- case SingletonType(_, sym) =>
- if ((sym.name.length() != 0) &&
+ case SingletonType(_, sym) =>
+ if ((sym.name.length() != 0) &&
("<root>" != sym.name)) {
printType0(tpe);
print(".")
@@ -198,22 +198,22 @@ class ScalaWriter(args: Arguments, writer: Writer) extends CodeWriter(writer) {
printType0(tpe);
print("#")
case _ =>
- Console.println(tpe.getClass());
+ Console.println(tpe.getClass());
printType0(tpe);
print(".")
}
def printTVar(tvar: Symbol): Unit = tvar match {
case sym: TypeSymbol =>
- print(sym.name);
- if (!isExternalType(sym.tpe, "Any")) {
- print(" <: ")*;
- printType(sym.tpe);
- }
- if (!isExternalType(sym.lower, "All")) {
- print(" >: ")*;
- printType(sym.lower);
- }
+ print(sym.name);
+ if (!isExternalType(sym.tpe, "Any")) {
+ print(" <: ")*;
+ printType(sym.tpe);
+ }
+ if (!isExternalType(sym.lower, "All")) {
+ print(" >: ")*;
+ printType(sym.lower);
+ }
}
def printFlags(sym: Symbol) = print(Flags.toString(sym.flags));