summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2014-02-15 16:04:57 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2014-02-15 16:04:57 -0800
commit00d19344b0c19a2999e48c6bd9326b94c7b54346 (patch)
tree3907923f893ed21c82ae6885f7866644f369a909 /src/library
parent81e12bdb26b75e0a8c289662d02cc6551268f7d3 (diff)
parentff4cfd575a9b731adc60582de447fafb5303eb49 (diff)
downloadscala-00d19344b0c19a2999e48c6bd9326b94c7b54346.tar.gz
scala-00d19344b0c19a2999e48c6bd9326b94c7b54346.tar.bz2
scala-00d19344b0c19a2999e48c6bd9326b94c7b54346.zip
Merge pull request #3511 from som-snytt/issue/interp-octal
SI-8266 Deprecate octal escapes in f-interpolator
Diffstat (limited to 'src/library')
-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