summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-11-04 14:53:50 +0000
committerPaul Phillips <paulp@improving.org>2011-11-04 14:53:50 +0000
commitf4991fcffc0cddcd16e7abccbc577581fbf5bd0f (patch)
treee3672911455f72dec4eb27c9e1799fe35d3d113f /test
parent8006cc6760b30274676ae5359c27b49e5cbf5670 (diff)
downloadscala-f4991fcffc0cddcd16e7abccbc577581fbf5bd0f.tar.gz
scala-f4991fcffc0cddcd16e7abccbc577581fbf5bd0f.tar.bz2
scala-f4991fcffc0cddcd16e7abccbc577581fbf5bd0f.zip
More repl work.
Hardened the repl against a bunch of erroneous conditions. Added a :reset command which causes the repl to forget everything you have told it. Added classloader tracing when repl tracing is enabled. :reset is not that useful in its current form but it's the precursor to something more interesting. No review.
Diffstat (limited to 'test')
-rw-r--r--test/files/jvm/interpreter.check2
-rw-r--r--test/files/run/repl-reset.check57
-rw-r--r--test/files/run/repl-reset.scala18
3 files changed, 76 insertions, 1 deletions
diff --git a/test/files/jvm/interpreter.check b/test/files/jvm/interpreter.check
index 607e2bcaff..196a769a17 100644
--- a/test/files/jvm/interpreter.check
+++ b/test/files/jvm/interpreter.check
@@ -369,7 +369,7 @@ scala>
scala>
plusOne: (x: Int)Int
res0: Int = 6
-res1: String = after reset
+res0: String = after reset
<console>:8: error: not found: value plusOne
plusOne(5) // should be undefined now
^
diff --git a/test/files/run/repl-reset.check b/test/files/run/repl-reset.check
new file mode 100644
index 0000000000..652948c63b
--- /dev/null
+++ b/test/files/run/repl-reset.check
@@ -0,0 +1,57 @@
+Type in expressions to have them evaluated.
+Type :help for more information.
+
+scala>
+
+scala> val x1 = 1
+x1: Int = 1
+
+scala> val x2 = 2
+x2: Int = 2
+
+scala> val x3 = 3
+x3: Int = 3
+
+scala> case class BippyBungus()
+defined class BippyBungus
+
+scala> x1 + x2 + x3
+res0: Int = 6
+
+scala> :reset
+Resetting interpreter state.
+Forgetting this session history:
+
+val x1 = 1
+val x2 = 2
+val x3 = 3
+case class BippyBungus()
+x1 + x2 + x3
+
+Forgetting all expression results and named terms: BippyBungus, x1, x2, x3
+Forgetting defined types: BippyBungus
+
+scala> x1 + x2 + x3
+<console>:8: error: not found: value x1
+ x1 + x2 + x3
+ ^
+
+scala> val x1 = 4
+x1: Int = 4
+
+scala> new BippyBungus
+<console>:8: error: not found: type BippyBungus
+ new BippyBungus
+ ^
+
+scala> class BippyBungus() { def f = 5 }
+defined class BippyBungus
+
+scala> { new BippyBungus ; x1 }
+res2: Int = 4
+
+scala> :javap BippyBungus
+Compiled from "<console>"public class BippyBungus extends java.lang.Object implements scala.ScalaObject{ public int f(); public BippyBungus();}
+scala>
+
+scala>
diff --git a/test/files/run/repl-reset.scala b/test/files/run/repl-reset.scala
new file mode 100644
index 0000000000..95cc48b942
--- /dev/null
+++ b/test/files/run/repl-reset.scala
@@ -0,0 +1,18 @@
+import scala.tools.partest.ReplTest
+
+object Test extends ReplTest {
+ def code = """
+ |val x1 = 1
+ |val x2 = 2
+ |val x3 = 3
+ |case class BippyBungus()
+ |x1 + x2 + x3
+ |:reset
+ |x1 + x2 + x3
+ |val x1 = 4
+ |new BippyBungus
+ |class BippyBungus() { def f = 5 }
+ |{ new BippyBungus ; x1 }
+ |:javap BippyBungus
+ """.stripMargin
+}