summaryrefslogtreecommitdiff
path: root/test/files/run/repl-javap-outdir
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2012-12-27 03:33:11 -0800
committerSom Snytt <som.snytt@gmail.com>2013-01-09 02:12:35 -0800
commit942f078720cb05c9238913bae8e62900558c2c45 (patch)
tree8c8d58fece2706cf2f8e57b168ea5378f2502c18 /test/files/run/repl-javap-outdir
parent666572261c41cc92b06c03bf4aa260c198240cd8 (diff)
downloadscala-942f078720cb05c9238913bae8e62900558c2c45.tar.gz
scala-942f078720cb05c9238913bae8e62900558c2c45.tar.bz2
scala-942f078720cb05c9238913bae8e62900558c2c45.zip
Repl javap decodes various synthetic names for us (fixing SI-6894)
For instance, javap -app Test is equivalent to javap Test$delayedInit$App with the correct line and iw prepended. This works by taking Test as a name in scope, translating that, and then supplying the suffix. Then javap -fun Test shows Test$$anonfun*, and for member m, javap -fun Test#m shows Test$$anonfun$$m*. This also works for classes and values defined in the repl. javap -fun -raw m shows $line3.$read$$iw$$iw$$anonfun$m$1. E.g., javap -fun scala.Enumeration obviates knowing or guessing scala/Enumeration$$anonfun$scala$Enumeration$$populateNameMap$1.class. Also, scala> :javap -fun scala.Array#concat but still to do is using imported syms. Both files and replout are supported for searching for artifacts. The trigger is detecting the synthetic name (has an interior dollar). Still to do, filter the output on Test#m to show only m. Need a way to explore the list of artifacts; ideally, related symbols would be available reflectively. Prefer companion class to object, otherwise it's not showable; for object, require dollar when both exist. A JavapTest is supplied that is a ReplTest that asserts something about its output instead of printing it.
Diffstat (limited to 'test/files/run/repl-javap-outdir')
-rw-r--r--test/files/run/repl-javap-outdir/foo_1.scala6
-rw-r--r--test/files/run/repl-javap-outdir/run-repl_7.scala12
2 files changed, 18 insertions, 0 deletions
diff --git a/test/files/run/repl-javap-outdir/foo_1.scala b/test/files/run/repl-javap-outdir/foo_1.scala
new file mode 100644
index 0000000000..9b98e94733
--- /dev/null
+++ b/test/files/run/repl-javap-outdir/foo_1.scala
@@ -0,0 +1,6 @@
+
+package disktest
+
+class Foo {
+ def m(vs: List[Int]) = vs map (_ + 1)
+}
diff --git a/test/files/run/repl-javap-outdir/run-repl_7.scala b/test/files/run/repl-javap-outdir/run-repl_7.scala
new file mode 100644
index 0000000000..dc2c5719ff
--- /dev/null
+++ b/test/files/run/repl-javap-outdir/run-repl_7.scala
@@ -0,0 +1,12 @@
+import scala.tools.partest.JavapTest
+
+object Test extends JavapTest {
+ def code = """
+ |:javap disktest/Foo.class
+ """.stripMargin
+
+ override def yah(res: Seq[String]) = {
+ def filtered = res filter (_ contains "public class disktest.Foo")
+ 1 == filtered.size
+ }
+}