summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@typesafe.com>2014-08-12 11:44:37 +0200
committerLukas Rytz <lukas.rytz@typesafe.com>2014-08-12 11:44:37 +0200
commitbc0fc0fb90c81038dba16415ee6e733e4e054a28 (patch)
tree861c0410d9d07fdf7dd8bc82977b1b6559beda97 /src/library
parent50167e3f1df664165a2ad485abace5dbce623996 (diff)
parenteff9a584a68c65935c313a6f26d7d4f778a61703 (diff)
downloadscala-bc0fc0fb90c81038dba16415ee6e733e4e054a28.tar.gz
scala-bc0fc0fb90c81038dba16415ee6e733e4e054a28.tar.bz2
scala-bc0fc0fb90c81038dba16415ee6e733e4e054a28.zip
Merge pull request #3889 from som-snytt/issue/6476-alt
SI-6476 Improve error on escapement
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/StringContext.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/library/scala/StringContext.scala b/src/library/scala/StringContext.scala
index fe69c6fbf8..2d2601c6fb 100644
--- a/src/library/scala/StringContext.scala
+++ b/src/library/scala/StringContext.scala
@@ -173,8 +173,13 @@ object StringContext {
* @param str The offending string
* @param idx The index of the offending backslash character in `str`.
*/
- class InvalidEscapeException(str: String, @deprecatedName('idx) val index: Int)
- extends IllegalArgumentException("invalid escape character at index "+index+" in \""+str+"\"")
+ class InvalidEscapeException(str: String, @deprecatedName('idx) val index: Int) extends IllegalArgumentException(
+ s"""invalid escape ${
+ require(index >= 0 && index < str.length)
+ val ok = """[\b, \t, \n, \f, \r, \\, \", \']"""
+ if (index == str.length - 1) "at terminal" else s"'\\${str(index + 1)}' not one of $ok at"
+ } index $index in "$str". Use \\\\ for literal \\."""
+ )
/** Expands standard Scala escape sequences in a string.
* Escape sequences are: