summaryrefslogtreecommitdiff
path: root/src/library/scala/StringContext.scala
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2014-02-11 13:53:32 -0800
committerSom Snytt <som.snytt@gmail.com>2014-02-11 13:53:32 -0800
commitff4cfd575a9b731adc60582de447fafb5303eb49 (patch)
tree5a01de0954e811fd7e012f3f902c74c540837b8d /src/library/scala/StringContext.scala
parentd4f5abf9002fd617e871d1f20fdcf531b38b26e1 (diff)
downloadscala-ff4cfd575a9b731adc60582de447fafb5303eb49.tar.gz
scala-ff4cfd575a9b731adc60582de447fafb5303eb49.tar.bz2
scala-ff4cfd575a9b731adc60582de447fafb5303eb49.zip
SI-8266 Deprecate octal escapes in f-interpolator
Also turns the f-interpolator into a migration assistant by suggesting alternatives for the standard escapes.
Diffstat (limited to 'src/library/scala/StringContext.scala')
-rw-r--r--src/library/scala/StringContext.scala11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/library/scala/StringContext.scala b/src/library/scala/StringContext.scala
index 2d79452c5d..cd928a2b61 100644
--- a/src/library/scala/StringContext.scala
+++ b/src/library/scala/StringContext.scala
@@ -172,8 +172,8 @@ object StringContext {
* @param str The offending string
* @param idx The index of the offending backslash character in `str`.
*/
- class InvalidEscapeException(str: String, idx: Int)
- extends IllegalArgumentException("invalid escape character at index "+idx+" in \""+str+"\"")
+ class InvalidEscapeException(str: String, @deprecatedName('idx) val index: Int)
+ extends IllegalArgumentException("invalid escape character at index "+index+" in \""+str+"\"")
/** Expands standard Scala escape sequences in a string.
* Escape sequences are:
@@ -184,7 +184,11 @@ object StringContext {
* @param str A string that may contain escape sequences
* @return The string with all escape sequences expanded.
*/
- def treatEscapes(str: String): String = {
+ def treatEscapes(str: String): String = treatEscapes0(str, strict = false)
+
+ def processEscapes(str: String): String = treatEscapes0(str, strict = true)
+
+ private def treatEscapes0(str: String, strict: Boolean): String = {
lazy val bldr = new java.lang.StringBuilder
val len = str.length
var start = 0
@@ -201,6 +205,7 @@ object StringContext {
idx += 1
if (idx >= len) throw new InvalidEscapeException(str, cur)
if ('0' <= str(idx) && str(idx) <= '7') {
+ if (strict) throw new InvalidEscapeException(str, cur)
val leadch = str(idx)
var oct = leadch - '0'
idx += 1