summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2014-02-26 19:10:35 +0100
committerAdriaan Moors <adriaan.moors@typesafe.com>2014-02-26 15:07:34 -0800
commit7bb1f41cd152b4e4930a1d8f769ddc2304cf6877 (patch)
tree7712f01830be391f64c0110629e8bf4e6d48c6eb
parent0e08d4984a3cdf67e7532aafb205fd852f57a56e (diff)
downloadscala-7bb1f41cd152b4e4930a1d8f769ddc2304cf6877.tar.gz
scala-7bb1f41cd152b4e4930a1d8f769ddc2304cf6877.tar.bz2
scala-7bb1f41cd152b4e4930a1d8f769ddc2304cf6877.zip
Revert "SI-7624 Fix -feature warnings in scala/tools/scalap"
This reverts commit f2de2c4ec43180351ef1f306bcc5f24643ba5477 because it broke both lift-json and json4s libraries that depend on scalap's APIs. Arguably, those libraries shouldn't depend on unofficial APIs but they do because they had no better alternative at the time (no Scala reflection). The cost of breaking them is not worth minor change of the package. The f2de2c4ec43180351ef1f306bcc5f24643ba5477 mixed two things: 1. Fixing feature warnings 2. Changing package name When reverting (and resolving conflicts) I tried to keep 1. and revert just 2. However, there were also some questionable changes related to 1. that got reverted. In particular, a package object with implicit members that enable language features is an anti-pattern because members of package object are visible both _within_ and _outside_ of the package. Therefore, user could use wildcard import for importing everything from scalap package and enabled postfixOps language feature unknowingly. I went for just adding imports in just those few files where they were needed. Amended by Adriaan: To allow faster turn around, I re-enabled resolving partest from sonatype, as its version needs to be bumped and I don't want to wait for maven central synch. Conflicts: src/partest/scala/tools/partest/nest/Runner.scala src/scalap/scala/tools/scalap/scalax/rules/Memoisable.scala src/scalap/scala/tools/scalap/scalax/rules/Rule.scala src/scalap/scala/tools/scalap/scalax/rules/Rules.scala src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSig.scala
-rwxr-xr-xbuild.xml2
-rw-r--r--src/scalap/scala/tools/scalap/Arguments.scala1
-rw-r--r--src/scalap/scala/tools/scalap/ByteArrayReader.scala12
-rw-r--r--src/scalap/scala/tools/scalap/Classfile.scala2
-rw-r--r--src/scalap/scala/tools/scalap/Classfiles.scala2
-rw-r--r--src/scalap/scala/tools/scalap/CodeWriter.scala8
-rw-r--r--src/scalap/scala/tools/scalap/Decode.scala30
-rw-r--r--src/scalap/scala/tools/scalap/JavaWriter.scala4
-rw-r--r--src/scalap/scala/tools/scalap/Main.scala16
-rw-r--r--src/scalap/scala/tools/scalap/MetaParser.scala6
-rw-r--r--src/scalap/scala/tools/scalap/Properties.scala3
-rw-r--r--src/scalap/scala/tools/scalap/rules/package.scala6
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/Memoisable.scala (renamed from src/scalap/scala/tools/scalap/rules/Memoisable.scala)9
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/Result.scala (renamed from src/scalap/scala/tools/scalap/rules/Result.scala)4
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/Rule.scala (renamed from src/scalap/scala/tools/scalap/rules/Rule.scala)7
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/Rules.scala (renamed from src/scalap/scala/tools/scalap/rules/Rules.scala)3
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/SeqRule.scala (renamed from src/scalap/scala/tools/scalap/rules/SeqRule.scala)9
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala (renamed from src/scalap/scala/tools/scalap/scalasig/ClassFileParser.scala)23
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/scalasig/Flags.scala (renamed from src/scalap/scala/tools/scalap/scalasig/Flags.scala)5
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSig.scala (renamed from src/scalap/scala/tools/scalap/scalasig/ScalaSig.scala)20
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala (renamed from src/scalap/scala/tools/scalap/scalasig/ScalaSigPrinter.scala)31
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/scalasig/SourceFileAttributeParser.scala (renamed from src/scalap/scala/tools/scalap/scalasig/SourceFileAttributeParser.scala)12
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/scalasig/Symbol.scala (renamed from src/scalap/scala/tools/scalap/scalasig/Symbol.scala)5
-rw-r--r--src/scalap/scala/tools/scalap/scalax/rules/scalasig/Type.scala (renamed from src/scalap/scala/tools/scalap/scalasig/Type.scala)5
-rw-r--r--src/scalap/scala/tools/scalap/scalax/util/StringUtil.scala19
-rw-r--r--versions.properties2
26 files changed, 163 insertions, 83 deletions
diff --git a/build.xml b/build.xml
index 4979ec26e7..ffac3faaa5 100755
--- a/build.xml
+++ b/build.xml
@@ -274,6 +274,7 @@ TODO:
</artifact:dependencies>
+ <artifact:remoteRepository id="sonatype-release" url="https://oss.sonatype.org/content/repositories/releases"/>
<artifact:remoteRepository id="extra-repo" url="${extra.repo.url}"/>
<!-- prepare, for each of the names below, the property "@{name}.cross", set to the
@@ -293,6 +294,7 @@ TODO:
<!-- so we don't have to wait for artifacts to synch to maven central
(we don't distribute partest with Scala, so the risk of sonatype and maven being out of synch is irrelevant):
-->
+ <artifact:remoteRepository refid="sonatype-release"/>
<artifact:remoteRepository refid="extra-repo"/>
<dependency groupId="org.scala-lang.modules" artifactId="scala-partest${partest.cross}" version="${partest.version.number}" />
</artifact:dependencies>
diff --git a/src/scalap/scala/tools/scalap/Arguments.scala b/src/scalap/scala/tools/scalap/Arguments.scala
index cb0a92b6b3..c375a5bac4 100644
--- a/src/scalap/scala/tools/scalap/Arguments.scala
+++ b/src/scalap/scala/tools/scalap/Arguments.scala
@@ -5,6 +5,7 @@
**
*/
+
package scala.tools.scalap
import scala.collection.mutable
diff --git a/src/scalap/scala/tools/scalap/ByteArrayReader.scala b/src/scalap/scala/tools/scalap/ByteArrayReader.scala
index 59f083ee76..cf160871dd 100644
--- a/src/scalap/scala/tools/scalap/ByteArrayReader.scala
+++ b/src/scalap/scala/tools/scalap/ByteArrayReader.scala
@@ -5,7 +5,10 @@
**
*/
-package scala.tools.scalap
+
+package scala
+package tools.scalap
+
class ByteArrayReader(content: Array[Byte]) {
@@ -101,6 +104,9 @@ class ByteArrayReader(content: Array[Byte]) {
def getDouble(bp: Int): Double = java.lang.Double.longBitsToDouble(getLong(bp))
/** skip next 'n' bytes
- */
- def skip(n: Int): Unit = bp += n
+ */
+ def skip(n: Int) {
+ bp += n
+ }
+
}
diff --git a/src/scalap/scala/tools/scalap/Classfile.scala b/src/scalap/scala/tools/scalap/Classfile.scala
index d9d264bbbf..f62df285f9 100644
--- a/src/scalap/scala/tools/scalap/Classfile.scala
+++ b/src/scalap/scala/tools/scalap/Classfile.scala
@@ -5,8 +5,10 @@
**
*/
+
package scala.tools.scalap
+
class Classfile(in: ByteArrayReader) {
import Classfiles._
diff --git a/src/scalap/scala/tools/scalap/Classfiles.scala b/src/scalap/scala/tools/scalap/Classfiles.scala
index 982a83cfa0..9295dd7aff 100644
--- a/src/scalap/scala/tools/scalap/Classfiles.scala
+++ b/src/scalap/scala/tools/scalap/Classfiles.scala
@@ -5,8 +5,10 @@
**
*/
+
package scala.tools.scalap
+
object Classfiles {
final val JAVA_MAGIC = 0xCAFEBABE
final val JAVA_MAJOR_VERSION = 45
diff --git a/src/scalap/scala/tools/scalap/CodeWriter.scala b/src/scalap/scala/tools/scalap/CodeWriter.scala
index 21c4399d5c..168050096d 100644
--- a/src/scalap/scala/tools/scalap/CodeWriter.scala
+++ b/src/scalap/scala/tools/scalap/CodeWriter.scala
@@ -6,9 +6,13 @@
*/
-package scala.tools.scalap
+package scala
+package tools.scalap
-class CodeWriter(writer: java.io.Writer) {
+import java.io._
+
+
+class CodeWriter(writer: Writer) {
private val nl = scala.compat.Platform.EOL
private var step = " "
diff --git a/src/scalap/scala/tools/scalap/Decode.scala b/src/scalap/scala/tools/scalap/Decode.scala
index 69325c1ec8..76ce3f4173 100644
--- a/src/scalap/scala/tools/scalap/Decode.scala
+++ b/src/scalap/scala/tools/scalap/Decode.scala
@@ -5,14 +5,17 @@
**
*/
-package scala.tools.scalap
+// $Id$
-import scala.tools.scalap.scalasig._
+package scala.tools.scalap
-import scala.reflect.internal.util.ScalaClassLoader
+import scala.tools.scalap.scalax.rules.scalasig._
+import scala.tools.nsc.util.ScalaClassLoader
+import scala.tools.nsc.util.ScalaClassLoader.appLoader
import scala.reflect.internal.pickling.ByteCodecs
import ClassFileParser.{ ConstValueIndex, Annotation }
+import Main.{ SCALA_SIG, SCALA_SIG_ANNOTATION, BYTES_VALUE }
/** Temporary decoder. This would be better off in the scala.tools.nsc
* but right now the compiler won't acknowledge scala.tools.scalap
@@ -28,7 +31,7 @@ object Decode {
/** Return the classfile bytes representing the scala sig classfile attribute.
* This has been obsoleted by the switch to annotations.
*/
- def scalaSigBytes(name: String): Option[Array[Byte]] = scalaSigBytes(name, ScalaClassLoader.appLoader)
+ def scalaSigBytes(name: String): Option[Array[Byte]] = scalaSigBytes(name, appLoader)
def scalaSigBytes(name: String, classLoader: ScalaClassLoader): Option[Array[Byte]] = {
val bytes = classLoader.classBytes(name)
val reader = new ByteArrayReader(bytes)
@@ -36,16 +39,17 @@ object Decode {
cf.scalaSigAttribute map (_.data)
}
- /** Return the bytes representing the annotation. */
- def scalaSigAnnotationBytes(name: String): Option[Array[Byte]] = scalaSigAnnotationBytes(name, ScalaClassLoader.appLoader)
+ /** Return the bytes representing the annotation
+ */
+ def scalaSigAnnotationBytes(name: String): Option[Array[Byte]] = scalaSigAnnotationBytes(name, appLoader)
def scalaSigAnnotationBytes(name: String, classLoader: ScalaClassLoader): Option[Array[Byte]] = {
val bytes = classLoader.classBytes(name)
val byteCode = ByteCode(bytes)
val classFile = ClassFileParser.parse(byteCode)
import classFile._
- classFile annotation Main.SCALA_SIG_ANNOTATION map { case Annotation(_, els) =>
- val bytesElem = els find (x => constant(x.elementNameIndex) == Main.BYTES_VALUE) getOrElse null
+ classFile annotation SCALA_SIG_ANNOTATION map { case Annotation(_, els) =>
+ val bytesElem = els find (x => constant(x.elementNameIndex) == BYTES_VALUE) getOrElse null
val _bytes = bytesElem.elementValue match { case ConstValueIndex(x) => constantWrapped(x) }
val bytes = _bytes.asInstanceOf[StringBytesPair].bytes
val length = ByteCodecs.decode(bytes)
@@ -54,7 +58,8 @@ object Decode {
}
}
- /** private[scala] so nobody gets the idea this is a supported interface. */
+ /** private[scala] so nobody gets the idea this is a supported interface.
+ */
private[scala] def caseParamNames(path: String): Option[List[String]] = {
val (outer, inner) = (path indexOf '$') match {
case -1 => (path, "")
@@ -62,7 +67,7 @@ object Decode {
}
for {
- clazz <- ScalaClassLoader.appLoader.tryToLoadClass[AnyRef](outer)
+ clazz <- appLoader.tryToLoadClass[AnyRef](outer)
ssig <- ScalaSigParser.parse(clazz)
}
yield {
@@ -80,10 +85,11 @@ object Decode {
}
}
- /** Returns a map of Alias -> Type for the given package. */
+ /** Returns a map of Alias -> Type for the given package.
+ */
private[scala] def typeAliases(pkg: String) = {
for {
- clazz <- ScalaClassLoader.appLoader.tryToLoadClass[AnyRef](pkg + ".package")
+ clazz <- appLoader.tryToLoadClass[AnyRef](pkg + ".package")
ssig <- ScalaSigParser.parse(clazz)
}
yield {
diff --git a/src/scalap/scala/tools/scalap/JavaWriter.scala b/src/scalap/scala/tools/scalap/JavaWriter.scala
index 1ba89e4702..772cf6eacd 100644
--- a/src/scalap/scala/tools/scalap/JavaWriter.scala
+++ b/src/scalap/scala/tools/scalap/JavaWriter.scala
@@ -5,11 +5,13 @@
**
*/
+
package scala.tools.scalap
+import java.io._
import scala.reflect.NameTransformer
-class JavaWriter(classfile: Classfile, writer: java.io.Writer) extends CodeWriter(writer) {
+class JavaWriter(classfile: Classfile, writer: Writer) extends CodeWriter(writer) {
val cf = classfile
diff --git a/src/scalap/scala/tools/scalap/Main.scala b/src/scalap/scala/tools/scalap/Main.scala
index 44d7ef6a41..c72f416a89 100644
--- a/src/scalap/scala/tools/scalap/Main.scala
+++ b/src/scalap/scala/tools/scalap/Main.scala
@@ -5,17 +5,17 @@
**
*/
-package scala.tools.scalap
+package scala
+package tools.scalap
import java.io.{ PrintStream, OutputStreamWriter, ByteArrayOutputStream }
-
+import scala.reflect.NameTransformer
+import scalax.rules.scalasig._
import scala.tools.nsc.util.{ ClassPath, JavaClassPath }
-import scala.tools.nsc.util.ClassPath.DefaultJavaContext
+import scala.tools.util.PathResolver
+import ClassPath.DefaultJavaContext
import scala.tools.nsc.io.AbstractFile
-import scala.tools.scalap.scalasig._
-
-
/**The main object used to execute scalap on the command-line.
*
* @author Matthias Zenger, Stephane Micheloud, Burak Emir, Ilya Sergey
@@ -104,7 +104,7 @@ class Main {
// we have to encode every fragment of a name separately, otherwise the NameTransformer
// will encode using unicode escaping dot separators as well
// we can afford allocations because this is not a performance critical code
- classname.split('.').map(scala.reflect.NameTransformer.encode).mkString(".")
+ classname.split('.').map(NameTransformer.encode).mkString(".")
}
val cls = path.findClass(encName)
if (cls.isDefined && cls.get.binary.isDefined) {
@@ -185,7 +185,7 @@ object Main extends Main {
val cparg = List("-classpath", "-cp") map (arguments getArgument _) reduceLeft (_ orElse _)
val path = cparg match {
case Some(cp) => new JavaClassPath(DefaultJavaContext.classesInExpandedPath(cp), DefaultJavaContext)
- case _ => scala.tools.util.PathResolver.fromPathString(".") // include '.' in the default classpath SI-6669
+ case _ => PathResolver.fromPathString(".") // include '.' in the default classpath SI-6669
}
// print the classpath if output is verbose
if (verbose)
diff --git a/src/scalap/scala/tools/scalap/MetaParser.scala b/src/scalap/scala/tools/scalap/MetaParser.scala
index 324330466f..1ebf86268a 100644
--- a/src/scalap/scala/tools/scalap/MetaParser.scala
+++ b/src/scalap/scala/tools/scalap/MetaParser.scala
@@ -6,15 +6,17 @@
*/
-package scala.tools.scalap
+package scala
+package tools.scalap
+import java.util._
/** a parser class for parsing meta type information in classfiles
* generated by pico.
*/
class MetaParser(meta: String) {
- val scanner = new java.util.StringTokenizer(meta, "()[], \t<;", true)
+ val scanner = new StringTokenizer(meta, "()[], \t<;", true)
var token: String = _
val res = new StringBuffer
diff --git a/src/scalap/scala/tools/scalap/Properties.scala b/src/scalap/scala/tools/scalap/Properties.scala
index 432dd495e9..8f9a9d8606 100644
--- a/src/scalap/scala/tools/scalap/Properties.scala
+++ b/src/scalap/scala/tools/scalap/Properties.scala
@@ -9,7 +9,8 @@
package scala.tools.scalap
/** Loads decoder.properties from the jar. */
-object Properties extends scala.util.PropertiesTrait {
+object Properties extends scala.util.PropertiesTrait
+{
protected def propCategory = "decoder"
protected def pickJarBasedOn = classOf[Classfile]
}
diff --git a/src/scalap/scala/tools/scalap/rules/package.scala b/src/scalap/scala/tools/scalap/rules/package.scala
deleted file mode 100644
index dcd5f7ac00..0000000000
--- a/src/scalap/scala/tools/scalap/rules/package.scala
+++ /dev/null
@@ -1,6 +0,0 @@
-package scala.tools.scalap
-
-package object rules {
- // make some language features in this package compile without warning
- implicit def postfixOps = scala.language.postfixOps
-}
diff --git a/src/scalap/scala/tools/scalap/rules/Memoisable.scala b/src/scalap/scala/tools/scalap/scalax/rules/Memoisable.scala
index 418141bee7..bdd1761ed9 100644
--- a/src/scalap/scala/tools/scalap/rules/Memoisable.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/Memoisable.scala
@@ -10,7 +10,9 @@
//
// -----------------------------------------------------------------------------
-package scala.tools.scalap.rules
+package scala.tools.scalap
+package scalax
+package rules
import scala.collection.mutable
@@ -20,7 +22,7 @@ trait MemoisableRules extends Rules {
from[In] { in => in.memo(key, rule(in)) }
}
- override def ruleWithName[In, Out, A, X](name: String, f: In => Result[Out, A, X]) = super.ruleWithName(name, (in: In) => in match {
+ override def ruleWithName[In, Out, A, X](name: String, f: In => rules.Result[Out, A, X]) = super.ruleWithName(name, (in: In) => in match {
case s: Memoisable => s.memo(name, f(in))
case _ => f(in)
})
@@ -54,3 +56,6 @@ trait DefaultMemoisable extends Memoisable {
if(DefaultMemoisable.debug) println(key + " -> " + t + " (" + out + ")")
}
}
+
+
+
diff --git a/src/scalap/scala/tools/scalap/rules/Result.scala b/src/scalap/scala/tools/scalap/scalax/rules/Result.scala
index ae05416d7a..f37340e7b7 100644
--- a/src/scalap/scala/tools/scalap/rules/Result.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/Result.scala
@@ -10,7 +10,9 @@
//
// -----------------------------------------------------------------------------
-package scala.tools.scalap.rules;
+package scala.tools.scalap
+package scalax
+package rules;
/** Represents the combined value of two rules applied in sequence.
*
diff --git a/src/scalap/scala/tools/scalap/rules/Rule.scala b/src/scalap/scala/tools/scalap/scalax/rules/Rule.scala
index 0a00111f7a..307458fc7d 100644
--- a/src/scalap/scala/tools/scalap/rules/Rule.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/Rule.scala
@@ -10,7 +10,9 @@
//
// -----------------------------------------------------------------------------
-package scala.tools.scalap.rules
+package scala.tools.scalap
+package scalax
+package rules
/** A Rule is a function from some input to a Result. The result may be:
* <ul>
@@ -170,3 +172,6 @@ trait Choice[-In, +Out, +A, +X] extends Rule[In, Out, A, X] {
lazy val choices = Choice.this.choices ::: other :: Nil
}
}
+
+
+
diff --git a/src/scalap/scala/tools/scalap/rules/Rules.scala b/src/scalap/scala/tools/scalap/scalax/rules/Rules.scala
index bdcc81c22d..dd17c46f79 100644
--- a/src/scalap/scala/tools/scalap/rules/Rules.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/Rules.scala
@@ -11,8 +11,11 @@
// -----------------------------------------------------------------------------
package scala.tools.scalap
+package scalax
package rules
+import language.postfixOps
+
trait Name {
def name: String
override def toString = name
diff --git a/src/scalap/scala/tools/scalap/rules/SeqRule.scala b/src/scalap/scala/tools/scalap/scalax/rules/SeqRule.scala
index e96a38b6be..f3c0235b23 100644
--- a/src/scalap/scala/tools/scalap/rules/SeqRule.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/SeqRule.scala
@@ -10,7 +10,11 @@
//
// -----------------------------------------------------------------------------
-package scala.tools.scalap.rules
+package scala.tools.scalap
+package scalax
+package rules
+
+import language.postfixOps
/**
* A workaround for the difficulties of dealing with
@@ -47,7 +51,7 @@ class SeqRule[S, +A, +X](rule: Rule[S, S, A, X]) {
/** Creates a rule that always succeeds with a Boolean value.
* Value is 'true' if this rule succeeds, 'false' otherwise */
- def -? = ? map { _.isDefined }
+ def -? = ? map { _ isDefined }
def * = from[S] {
// tail-recursive function with reverse list accumulator
@@ -96,3 +100,4 @@ class SeqRule[S, +A, +X](rule: Rule[S, S, A, X]) {
in => rep(0, in)
}
}
+
diff --git a/src/scalap/scala/tools/scalap/scalasig/ClassFileParser.scala b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala
index 9bd8402ccc..cfd750055b 100644
--- a/src/scalap/scala/tools/scalap/scalasig/ClassFileParser.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ClassFileParser.scala
@@ -1,6 +1,11 @@
-package scala.tools.scalap.scalasig
+package scala.tools.scalap
+package scalax
+package rules
+package scalasig
-import scala.tools.scalap.rules.{ Success, Failure, ~, RulesWithState }
+import language.postfixOps
+
+import java.io.IOException
object ByteCode {
def apply(bytes: Array[Byte]) = new ByteCode(bytes, 0, bytes.length)
@@ -15,7 +20,7 @@ object ByteCode {
val bytes = new Array[Byte](rest)
while (rest > 0) {
val res = in.read(bytes, bytes.length - rest, rest)
- if (res == -1) throw new java.io.IOException("read error")
+ if (res == -1) throw new IOException("read error")
rest -= res
}
ByteCode(bytes)
@@ -26,7 +31,8 @@ object ByteCode {
}
}
-/** Represents a chunk of raw bytecode. Used as input for the parsers. */
+/** Represents a chunk of raw bytecode. Used as input for the parsers
+ */
class ByteCode(val bytes: Array[Byte], val pos: Int, val length: Int) {
assert(pos >= 0 && length >= 0 && pos + length <= bytes.length)
@@ -78,11 +84,11 @@ trait ByteCodeReader extends RulesWithState {
type S = ByteCode
type Parser[A] = Rule[A, String]
- val byte = apply(_.nextByte)
+ val byte = apply(_ nextByte)
val u1 = byte ^^ (_ & 0xFF)
- val u2 = bytes(2) ^^ (_.toInt)
- val u4 = bytes(4) ^^ (_.toInt) // should map to Long??
+ val u2 = bytes(2) ^^ (_ toInt)
+ val u4 = bytes(4) ^^ (_ toInt) // should map to Long??
def bytes(n: Int) = apply(_ next n)
}
@@ -93,7 +99,7 @@ object ClassFileParser extends ByteCodeReader {
val magicNumber = (u4 filter (_ == 0xCAFEBABE)) | error("Not a valid class file")
val version = u2 ~ u2 ^^ { case minor ~ major => (major, minor) }
- val constantPool = (u2 ^^ ConstantPool) >> repeatUntil(constantPoolEntry)(_.isFull)
+ val constantPool = (u2 ^^ ConstantPool) >> repeatUntil(constantPoolEntry)(_ isFull)
// NOTE currently most constants just evaluate to a string description
// TODO evaluate to useful values
@@ -238,3 +244,4 @@ case class ConstantPool(len: Int) {
this
}
}
+
diff --git a/src/scalap/scala/tools/scalap/scalasig/Flags.scala b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/Flags.scala
index b9925150d2..050317cb82 100644
--- a/src/scalap/scala/tools/scalap/scalasig/Flags.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/Flags.scala
@@ -1,4 +1,7 @@
-package scala.tools.scalap.scalasig
+package scala.tools.scalap
+package scalax
+package rules
+package scalasig
trait Flags {
def hasFlag(flag: Long): Boolean
diff --git a/src/scalap/scala/tools/scalap/scalasig/ScalaSig.scala b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSig.scala
index 311e4acd6f..e3076322dd 100644
--- a/src/scalap/scala/tools/scalap/scalasig/ScalaSig.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSig.scala
@@ -5,25 +5,27 @@
**
*/
-package scala.tools.scalap.scalasig
-import scala.language.implicitConversions
-
-import scala.reflect.internal.pickling.ByteCodecs
+package scala.tools.scalap
+package scalax
+package rules
+package scalasig
-import scala.tools.scalap.Main
-import scala.tools.scalap.rules._
+import scala.language.postfixOps
+import scala.language.implicitConversions
import ClassFileParser.{ ConstValueIndex, Annotation }
+import scala.reflect.internal.pickling.ByteCodecs
object ScalaSigParser {
+ import Main.{ SCALA_SIG, SCALA_SIG_ANNOTATION, BYTES_VALUE }
def scalaSigFromAnnotation(classFile: ClassFile): Option[ScalaSig] = {
import classFile._
- classFile.annotation(Main.SCALA_SIG_ANNOTATION) map {
+ classFile.annotation(SCALA_SIG_ANNOTATION) map {
case Annotation(_, elements) =>
- val bytesElem = elements.find(elem => constant(elem.elementNameIndex) == Main.BYTES_VALUE).get
+ val bytesElem = elements.find(elem => constant(elem.elementNameIndex) == BYTES_VALUE).get
val bytes = ((bytesElem.elementValue match {case ConstValueIndex(index) => constantWrapped(index)})
.asInstanceOf[StringBytesPair].bytes)
val length = ByteCodecs.decode(bytes)
@@ -33,7 +35,7 @@ object ScalaSigParser {
}
def scalaSigFromAttribute(classFile: ClassFile): Option[ScalaSig] =
- classFile.attribute(Main.SCALA_SIG).map(_.byteCode).map(ScalaSigAttributeParsers.parse)
+ classFile.attribute(SCALA_SIG).map(_.byteCode).map(ScalaSigAttributeParsers.parse)
def parse(classFile: ClassFile): Option[ScalaSig] = {
val scalaSig = scalaSigFromAttribute(classFile)
diff --git a/src/scalap/scala/tools/scalap/scalasig/ScalaSigPrinter.scala b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala
index 5929e0f59f..dd17c39d84 100644
--- a/src/scalap/scala/tools/scalap/scalasig/ScalaSigPrinter.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/ScalaSigPrinter.scala
@@ -5,14 +5,19 @@
**
*/
-package scala.tools.scalap.scalasig
-import scala.language.implicitConversions
+package scala.tools.scalap
+package scalax
+package rules
+package scalasig
+
+import language.postfixOps
import java.io.{PrintStream, ByteArrayOutputStream}
import java.util.regex.Pattern
-
-import scala.tools.scalap.rules.~
+import scala.tools.scalap.scalax.util.StringUtil
+import scala.reflect.NameTransformer
+import java.lang.String
class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) {
import stream._
@@ -343,8 +348,8 @@ class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) {
}
case "scala.<byname>" => "=> " + toString(typeArgs.head)
case _ => {
- val path = cutSubstring(symbol.path)(".package") //remove package object reference
- trimStart(processName(path) + typeArgString(typeArgs), "<empty>.")
+ val path = StringUtil.cutSubstring(symbol.path)(".package") //remove package object reference
+ StringUtil.trimStart(processName(path) + typeArgString(typeArgs), "<empty>.")
}
})
case TypeBoundsType(lower, upper) => {
@@ -389,7 +394,7 @@ class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) {
def typeArgString(typeArgs: Seq[Type]): String =
if (typeArgs.isEmpty) ""
- else typeArgs.map(toString).map(trimStart(_, "=> ")).mkString("[", ", ", "]")
+ else typeArgs.map(toString).map(StringUtil.trimStart(_, "=> ")).mkString("[", ", ", "]")
def typeParamString(params: Seq[Symbol]): String =
if (params.isEmpty) ""
@@ -410,7 +415,7 @@ class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) {
if (i > 0) name.substring(i + 2) else name
}
- private def processName(name: String) = {
+ def processName(name: String) = {
val stripped = stripPrivatePrefix(name)
val m = pattern.matcher(stripped)
var temp = stripped
@@ -420,15 +425,7 @@ class ScalaSigPrinter(stream: PrintStream, printPrivates: Boolean) {
temp = temp.replaceAll(re, _syms(re))
}
val result = temp.replaceAll(placeholderPattern, "_")
- scala.reflect.NameTransformer.decode(result)
+ NameTransformer.decode(result)
}
- private def trimStart(s: String, prefix: String) =
- if (s != null && s.startsWith(prefix)) s.substring(prefix.length) else s
-
- private def decapitalize(s: String) =
- java.beans.Introspector.decapitalize(s)
-
- private def cutSubstring(dom: String)(s: String) =
- if (dom != null && s != null) dom.replace(s, "") else dom
}
diff --git a/src/scalap/scala/tools/scalap/scalasig/SourceFileAttributeParser.scala b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/SourceFileAttributeParser.scala
index 88d3d3b8b0..fc5a75c046 100644
--- a/src/scalap/scala/tools/scalap/scalasig/SourceFileAttributeParser.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/SourceFileAttributeParser.scala
@@ -1,4 +1,7 @@
-package scala.tools.scalap.scalasig
+package scala.tools.scalap
+package scalax
+package rules
+package scalasig
/**
* @author ilyas
@@ -13,12 +16,13 @@ object SourceFileAttributeParser extends ByteCodeReader {
/**
*
* SourceFile_attribute {
- u2 attribute_name_index;
- u4 attribute_length;
- u2 sourcefile_index;
+ u2 attribute_name_index;
+ u4 attribute_length;
+ u2 sourcefile_index;
}
*
* Contains only file index in ConstantPool, first two fields are already treated
* by {@link scalax.rules.scalasig.ClassFile.attribute#attribute}
*/
case class SourceFileInfo(sourceFileIndex: Int)
+
diff --git a/src/scalap/scala/tools/scalap/scalasig/Symbol.scala b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/Symbol.scala
index 0656938150..6c38687649 100644
--- a/src/scalap/scala/tools/scalap/scalasig/Symbol.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/Symbol.scala
@@ -1,4 +1,7 @@
-package scala.tools.scalap.scalasig
+package scala.tools.scalap
+package scalax
+package rules
+package scalasig
import ScalaSigEntryParsers._
diff --git a/src/scalap/scala/tools/scalap/scalasig/Type.scala b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/Type.scala
index 97dc28d223..22d90325ce 100644
--- a/src/scalap/scala/tools/scalap/scalasig/Type.scala
+++ b/src/scalap/scala/tools/scalap/scalax/rules/scalasig/Type.scala
@@ -1,4 +1,7 @@
-package scala.tools.scalap.scalasig
+package scala.tools.scalap
+package scalax
+package rules
+package scalasig
abstract class Type
diff --git a/src/scalap/scala/tools/scalap/scalax/util/StringUtil.scala b/src/scalap/scala/tools/scalap/scalax/util/StringUtil.scala
new file mode 100644
index 0000000000..6077eded0f
--- /dev/null
+++ b/src/scalap/scala/tools/scalap/scalax/util/StringUtil.scala
@@ -0,0 +1,19 @@
+package scala.tools.scalap
+package scalax
+package util
+
+import java.beans.Introspector
+
+/**
+ * @author ilyas
+ */
+
+object StringUtil {
+
+ def trimStart(s: String, prefix: String) = if (s != null && s.startsWith(prefix)) s.substring(prefix.length) else s
+
+ def decapitalize(s: String) = Introspector.decapitalize(s)
+
+ def cutSubstring(dom: String)(s: String) = if (dom != null && s != null) dom.replace(s, "") else dom
+
+}
diff --git a/versions.properties b/versions.properties
index 2ea8e713f1..9109702299 100644
--- a/versions.properties
+++ b/versions.properties
@@ -18,7 +18,7 @@ akka-actor.version.number=2.2.3
actors-migration.version.number=1.0.0
# external modules, used internally (not shipped)
-partest.version.number=1.0.0-RC8
+partest.version.number=1.0.0-RC9
scalacheck.version.number=1.11.3
# TODO: modularize the compiler