diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-12-03 21:58:36 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-12-03 23:42:42 +0100 |
commit | 90c87fc266ec45e8970f6ea0f00d375b63afd35d (patch) | |
tree | b575b8839594186277a53cf75d7fd4fa79faa765 /test/files/run | |
parent | fd57069a3a49de1757a518b573a0cd8cb98bbbd5 (diff) | |
download | scala-90c87fc266ec45e8970f6ea0f00d375b63afd35d.tar.gz scala-90c87fc266ec45e8970f6ea0f00d375b63afd35d.tar.bz2 scala-90c87fc266ec45e8970f6ea0f00d375b63afd35d.zip |
SI-6549 Improve escaping in REPL codegen.
- Escape the LHS of an assign when printing results
- e.g. X("").foo = bar
- Escape val names
- e.g. val `"` = 0`
Diffstat (limited to 'test/files/run')
-rw-r--r-- | test/files/run/t6549.check | 32 | ||||
-rw-r--r-- | test/files/run/t6549.scala | 22 |
2 files changed, 54 insertions, 0 deletions
diff --git a/test/files/run/t6549.check b/test/files/run/t6549.check new file mode 100644 index 0000000000..bc78aac741 --- /dev/null +++ b/test/files/run/t6549.check @@ -0,0 +1,32 @@ +Type in expressions to have them evaluated. +Type :help for more information. + +scala> + +scala> case class `X"`(var xxx: Any) +defined class X$u0022 + +scala> val m = Map(("": Any) -> `X"`("\""), ('s: Any) -> `X"`("\"")) +m: scala.collection.immutable.Map[Any,X"] = Map("" -> X"("), 's -> X"(")) + +scala> m("") +res0: X" = X"(") + +scala> m("").xxx +res1: Any = " + +scala> m("").xxx = 0 +m("").xxx: Any = 0 + +scala> m("").xxx = "\"" +m("").xxx: Any = " + +scala> m('s).xxx = 's +m(scala.Symbol("s")).xxx: Any = 's + +scala> val `"` = 0 +": Int = 0 + +scala> + +scala> diff --git a/test/files/run/t6549.scala b/test/files/run/t6549.scala new file mode 100644 index 0000000000..7335661dc7 --- /dev/null +++ b/test/files/run/t6549.scala @@ -0,0 +1,22 @@ +import scala.tools.partest.ReplTest + +// Check that the fragments of code generated in +// in the REPL correctly escape values added to +// literal strings. +// +// Before, we saw: +// scala> m("").x = 77 +// <console>:10: error: ')' expected but string literal found. +// + "m("").x: Int = " + `$ires8` + "\n" +object Test extends ReplTest { + def code = """ + |case class `X"`(var xxx: Any) + |val m = Map(("": Any) -> `X"`("\""), ('s: Any) -> `X"`("\"")) + |m("") + |m("").xxx + |m("").xxx = 0 + |m("").xxx = "\"" + |m('s).xxx = 's + |val `"` = 0 + """.stripMargin +} |