From e96dba0c9a2467c6cf396c70a48ef0750503c26e Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Tue, 15 Mar 2011 02:56:58 +0000 Subject: Various chronic annoyances with the repl addres... Various chronic annoyances with the repl addressed. Much improved transcript pasting. Now goes back in time to fix the transcript if it contains self-referential "res0, res1" etc. so that it works as it originally did. Shows which commands it is running, and places the commands with their result in a manner suitable for framing. Also, a new :paste command which accepts input up to ctrl-D, so you can enter companions without gyrations, or code from people who write in a repl unfriendly fashion by putting their curly braces on the next line (I'm looking at you mark harrah) or you name it, it's not picky. No review. --- test/files/run/repl-paste-2.check | 31 +++++++++++++++++++++++++++++++ test/files/run/repl-paste-2.scala | 28 ++++++++++++++++++++++++++++ test/files/run/repl-paste.check | 13 +++++++++++++ test/files/run/repl-paste.scala | 19 +++++++++++++++++++ test/files/run/repl-transcript.check | 23 +++++++++++++++++++++++ test/files/run/repl-transcript.scala | 20 ++++++++++++++++++++ 6 files changed, 134 insertions(+) create mode 100644 test/files/run/repl-paste-2.check create mode 100644 test/files/run/repl-paste-2.scala create mode 100644 test/files/run/repl-paste.check create mode 100644 test/files/run/repl-paste.scala create mode 100644 test/files/run/repl-transcript.check create mode 100644 test/files/run/repl-transcript.scala (limited to 'test/files') diff --git a/test/files/run/repl-paste-2.check b/test/files/run/repl-paste-2.check new file mode 100644 index 0000000000..fb7a818f1a --- /dev/null +++ b/test/files/run/repl-paste-2.check @@ -0,0 +1,31 @@ +Type in expressions to have them evaluated. +Type :help for more information. + +scala> +scala> // Replaying 7 commands from transcript. + +val res0 = { 123 } +res0: Int = 123 + +val res1 = { 567 } +res1: Int = 567 + +val res2 = { res0 + res1 } +res2: Int = 690 + +val x = dingus +:7: error: not found: value dingus + val x = dingus + ^ + +val x = "dingus" +x: java.lang.String = dingus + +val res3 = { x.length } +res3: Int = 6 + +val res4 = { x.length + res3 } +res4: Int = 12 + + +scala> diff --git a/test/files/run/repl-paste-2.scala b/test/files/run/repl-paste-2.scala new file mode 100644 index 0000000000..802c627701 --- /dev/null +++ b/test/files/run/repl-paste-2.scala @@ -0,0 +1,28 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + def code = """ +scala> 123 +res0: Int = 123 + +scala> 567 +res1: Int = 567 + +scala> res0 + res1 +res2: Int = 690 + +scala> val x = dingus +:7: error: not found: value dingus + val x = dingus + ^ + +scala> val x = "dingus" +x: java.lang.String = dingus + +scala> x.length +res3: Int = 6 + +scala> x.length + res3 +res4: Int = 12 + """ +} \ No newline at end of file diff --git a/test/files/run/repl-paste.check b/test/files/run/repl-paste.check new file mode 100644 index 0000000000..4c9de85e67 --- /dev/null +++ b/test/files/run/repl-paste.check @@ -0,0 +1,13 @@ +Type in expressions to have them evaluated. +Type :help for more information. + +scala> // Entering paste mode (ctrl-D to finish) + + +// Exiting paste mode, now interpreting. + +defined class Dingus +defined module Dingus +x: Int = 110 + +scala> diff --git a/test/files/run/repl-paste.scala b/test/files/run/repl-paste.scala new file mode 100644 index 0000000000..e2ebab1e45 --- /dev/null +++ b/test/files/run/repl-paste.scala @@ -0,0 +1,19 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + def code = ":paste\n" + ( + """ + class Dingus + { + private val x = 5 + def y = Dingus.x * 2 + } + object Dingus + { + private val x = 55 + } + + val x = (new Dingus).y + """ + ) +} \ No newline at end of file diff --git a/test/files/run/repl-transcript.check b/test/files/run/repl-transcript.check new file mode 100644 index 0000000000..b2a8d2e156 --- /dev/null +++ b/test/files/run/repl-transcript.check @@ -0,0 +1,23 @@ +Type in expressions to have them evaluated. +Type :help for more information. + +scala> +scala> // Replaying 5 commands from transcript. + +class Bippity +defined class Bippity + +def f = new Bippity +f: Bippity + +val res5 = { 123 } +res5: Int = 123 + +val res6 = { 1 to 100 map (_ + 1) } +res6: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101) + +res6.sum + res5 +res0: Int = 5273 + + +scala> diff --git a/test/files/run/repl-transcript.scala b/test/files/run/repl-transcript.scala new file mode 100644 index 0000000000..b39279aea3 --- /dev/null +++ b/test/files/run/repl-transcript.scala @@ -0,0 +1,20 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + def code = """ +scala> class Bippity +defined class Bippity + +scala> def f = new Bippity +f: Bippity + +scala> 123 +res5: Int = 123 + +scala> 1 to 100 map (_ + 1) +res6: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101) + +scala> res6.sum + res5 + """ +} + -- cgit v1.2.3