summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-04-22 10:29:14 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2016-04-22 10:29:14 +0200
commitb3f205996e665cd3f2a1ab250e3efa3fd4921210 (patch)
tree0b8e3373c28bb7e8c529a8f71a2f0753da6e8e86
parent9adfb0f354a5d356bba0beb0397dd00bf0503074 (diff)
parent684c314d882dcfd26558c9972cfd5acabc9f051f (diff)
downloadscala-b3f205996e665cd3f2a1ab250e3efa3fd4921210.tar.gz
scala-b3f205996e665cd3f2a1ab250e3efa3fd4921210.tar.bz2
scala-b3f205996e665cd3f2a1ab250e3efa3fd4921210.zip
Merge commit '684c314' into merge-2.11-to-2.12-apr-22
-rw-r--r--README.md2
-rw-r--r--src/repl/scala/tools/nsc/interpreter/Imports.scala2
-rw-r--r--src/repl/scala/tools/nsc/interpreter/ReplStrings.scala16
-rw-r--r--test/files/run/repl-no-uescape.check5
-rw-r--r--test/files/run/repl-no-uescape.scala31
-rwxr-xr-xtest/files/run/repl-paste-6.check17
-rw-r--r--test/files/run/repl-paste-6.scala23
7 files changed, 90 insertions, 6 deletions
diff --git a/README.md b/README.md
index 4ce58459a7..dc869da0da 100644
--- a/README.md
+++ b/README.md
@@ -131,7 +131,7 @@ Here, `<milestone>` is the milestone targeted by the PR (e.g., 2.11.6), and `<sh
## IDE Setup
### Eclipse
-See `src/eclipse/README.md`.
+See [src/eclipse/README.md](src/eclipse/README.md).
### IntelliJ 15
See [src/intellij/README.md](src/intellij/README.md).
diff --git a/src/repl/scala/tools/nsc/interpreter/Imports.scala b/src/repl/scala/tools/nsc/interpreter/Imports.scala
index 6a75432ac6..fdbd93d862 100644
--- a/src/repl/scala/tools/nsc/interpreter/Imports.scala
+++ b/src/repl/scala/tools/nsc/interpreter/Imports.scala
@@ -183,7 +183,7 @@ trait Imports {
case _ =>
val valName = req.lineRep.packageName + req.lineRep.readName
if (!tempValLines.contains(req.lineRep.lineId)) {
- code.append(s"val $valName = $objName\n")
+ code.append(s"val $valName: ${objName}.type = $objName\n")
tempValLines += req.lineRep.lineId
}
code.append(s"import $valName${req.accessPath}.`$imv`;\n")
diff --git a/src/repl/scala/tools/nsc/interpreter/ReplStrings.scala b/src/repl/scala/tools/nsc/interpreter/ReplStrings.scala
index 1664546cab..bf7508cb4e 100644
--- a/src/repl/scala/tools/nsc/interpreter/ReplStrings.scala
+++ b/src/repl/scala/tools/nsc/interpreter/ReplStrings.scala
@@ -11,13 +11,21 @@ import scala.reflect.internal.Chars
trait ReplStrings {
/** Convert a string into code that can recreate the string.
* This requires replacing all special characters by escape
- * codes. It does not add the surrounding " marks. */
+ * codes. It does not add the surrounding " marks.
+ */
def string2code(str: String): String = {
val res = new StringBuilder
for (c <- str) c match {
- case '"' | '\'' | '\\' => res += '\\' ; res += c
- case _ if c.isControl => res ++= Chars.char2uescape(c)
- case _ => res += c
+ case '"' => res ++= """\""""
+ case '\'' => res ++= """\'"""
+ case '\\' => res ++= """\\"""
+ case '\b' => res ++= """\b"""
+ case '\t' => res ++= """\t"""
+ case '\n' => res ++= """\n"""
+ case '\f' => res ++= """\f"""
+ case '\r' => res ++= """\r"""
+ case _ if c.isControl => res ++= Chars.char2uescape(c)
+ case _ => res += c
}
res.toString
}
diff --git a/test/files/run/repl-no-uescape.check b/test/files/run/repl-no-uescape.check
new file mode 100644
index 0000000000..01eeafaa70
--- /dev/null
+++ b/test/files/run/repl-no-uescape.check
@@ -0,0 +1,5 @@
+
+scala> object A
+defined object A
+
+scala> :quit
diff --git a/test/files/run/repl-no-uescape.scala b/test/files/run/repl-no-uescape.scala
new file mode 100644
index 0000000000..1865109ebf
--- /dev/null
+++ b/test/files/run/repl-no-uescape.scala
@@ -0,0 +1,31 @@
+import scala.tools.partest.ReplTest
+import scala.tools.nsc.Settings
+
+/*
+scala> object A
+<console>:10: error: invalid escape character
++ "defined object " + "A" + "\u000A"
+
+Under -Dscala.color=true control chars are common
+ $eval.this.$print = {
+ $line2.$read.$iw.$iw;
+ "\033[1m\033[34mres1\033[0m: \033[1m\033[32mInt\033[0m = ".+(scala.runtime.ScalaRunTime.replStringOf($line2.$read.$iw.$iw.res1, 1000))
+ };
+
+$ skala -Dscala.color=true -Xno-uescape
+Welcome to Scala 2.11.9-20160323-163638-1fcfdd8c8b (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_60).
+Type in expressions for evaluation. Or try :help.
+
+scala> 42
+<console>:10: error: invalid escape character
+ + "\u001B[1m\u001B[34mres0\u001B[0m: \u001B[1m\u001B[32mInt\u001B[0m = " + scala.runtime.ScalaRunTime.replStringOf(res0, 1000)
+ */
+object Test extends ReplTest {
+ override def transformSettings(settings: Settings): Settings = {
+ settings.nouescape.value = true
+ settings
+ }
+ def code = """
+object A
+ """
+}
diff --git a/test/files/run/repl-paste-6.check b/test/files/run/repl-paste-6.check
new file mode 100755
index 0000000000..efcea9274f
--- /dev/null
+++ b/test/files/run/repl-paste-6.check
@@ -0,0 +1,17 @@
+
+scala> :paste < EOF
+// Entering paste mode (EOF to finish)
+
+case class C(i: Int)
+val c = C(42)
+EOF
+
+// Exiting paste mode, now interpreting.
+
+defined class C
+c: C = C(42)
+
+scala> val d: C = c // shew
+d: C = C(42)
+
+scala> :quit
diff --git a/test/files/run/repl-paste-6.scala b/test/files/run/repl-paste-6.scala
new file mode 100644
index 0000000000..8040d24f8a
--- /dev/null
+++ b/test/files/run/repl-paste-6.scala
@@ -0,0 +1,23 @@
+
+import scala.tools.partest.ReplTest
+import scala.tools.nsc.Settings
+
+
+/*
+ * Add // show to witness:
+ * val $line3$read: $line3.$read.INSTANCE.type = $line3.$read.INSTANCE;
+ */
+object Test extends ReplTest {
+ override def transformSettings(settings: Settings): Settings = {
+ settings.Yreplclassbased.value = true
+ settings
+ }
+ def code =
+ """
+:paste < EOF
+case class C(i: Int)
+val c = C(42)
+EOF
+val d: C = c // shew
+ """
+}