summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-05-07 02:05:54 +0000
committerPaul Phillips <paulp@improving.org>2011-05-07 02:05:54 +0000
commita4c920acf13a89a8589ab6097677901e9505dd46 (patch)
treeeec57e29b12374a3fa0267268e6abaf191bc3c03
parent9654d5149166464987b7f8aa6c6d2cae8cbb3ae6 (diff)
downloadscala-a4c920acf13a89a8589ab6097677901e9505dd46.tar.gz
scala-a4c920acf13a89a8589ab6097677901e9505dd46.tar.bz2
scala-a4c920acf13a89a8589ab6097677901e9505dd46.zip
Attempting to make the :javap test pass on wind...
Attempting to make the :javap test pass on windows, no review.
-rw-r--r--src/compiler/scala/tools/util/Javap.scala28
-rw-r--r--test/files/run/bug4532.scala26
2 files changed, 42 insertions, 12 deletions
diff --git a/src/compiler/scala/tools/util/Javap.scala b/src/compiler/scala/tools/util/Javap.scala
index 581cc9dbef..679fc0965b 100644
--- a/src/compiler/scala/tools/util/Javap.scala
+++ b/src/compiler/scala/tools/util/Javap.scala
@@ -20,6 +20,12 @@ class Javap(
lazy val parser = new JpOptions
+ val EnvClass = loader.tryToInitializeClass[FakeEnvironment](Env).orNull
+ val EnvCtr = EnvClass.getConstructor(List[Class[_]](): _*)
+
+ val PrinterClass = loader.tryToInitializeClass[FakePrinter](Printer).orNull
+ val PrinterCtr = PrinterClass.getConstructor(classOf[InputStream], classOf[PrintWriter], EnvClass)
+
def findBytes(path: String): Array[Byte] =
tryFile(path) getOrElse tryClass(path)
@@ -31,18 +37,6 @@ class Javap(
}
}
- // "documentation"
- type FakeEnvironment = AnyRef
- type FakePrinter = AnyRef
-
- val Env = "sun.tools.javap.JavapEnvironment"
- val EnvClass = loader.tryToInitializeClass[FakeEnvironment](Env).orNull
- val EnvCtr = EnvClass.getConstructor(List[Class[_]](): _*)
-
- val Printer = "sun.tools.javap.JavapPrinter"
- val PrinterClass = loader.tryToInitializeClass[FakePrinter](Printer).orNull
- val PrinterCtr = PrinterClass.getConstructor(classOf[InputStream], classOf[PrintWriter], EnvClass)
-
def newPrinter(in: InputStream, env: FakeEnvironment): FakePrinter =
PrinterCtr.newInstance(in, printWriter, env)
@@ -82,6 +76,16 @@ class Javap(
}
object Javap {
+ val Env = "sun.tools.javap.JavapEnvironment"
+ val Printer = "sun.tools.javap.JavapPrinter"
+
+ def isAvailable(cl: ScalaClassLoader = ScalaClassLoader.getSystemLoader()) =
+ cl.tryToInitializeClass[AnyRef](Env).isDefined
+
+ // "documentation"
+ type FakeEnvironment = AnyRef
+ type FakePrinter = AnyRef
+
def apply(path: String): Unit = apply(Seq(path))
def apply(args: Seq[String]): Unit = new Javap() apply args foreach (_.show())
diff --git a/test/files/run/bug4532.scala b/test/files/run/bug4532.scala
index 31b608a858..484f805dbb 100644
--- a/test/files/run/bug4532.scala
+++ b/test/files/run/bug4532.scala
@@ -1,6 +1,32 @@
import scala.tools.partest.ReplTest
+import scala.tools.util.Javap
object Test extends ReplTest {
+
+ // ugh, windows
+ def expectedOutput =
+"""
+Type in expressions to have them evaluated.
+Type :help for more information.
+
+scala>
+
+scala> object Bippy { class Dingus ; object Bop }
+defined module Bippy
+
+scala> :javap Bippy.Dingus
+Compiled from "<console>"public class Bippy$Dingus extends java.lang.Object implements scala.ScalaObject{ public Bippy$Dingus();}
+scala> :javap Bippy.Bop
+Compiled from "<console>"public final class Bippy$Bop$ extends java.lang.Object implements scala.ScalaObject{ public static final Bippy$Bop$ MODULE$; public static {}; public Bippy$Bop$();}
+scala>
+
+scala>
+"""
+
+ override def eval() =
+ if (Javap.isAvailable()) super.eval()
+ else expectedOutput.lines
+
def code = """
|object Bippy { class Dingus ; object Bop }
|:javap Bippy.Dingus