summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-03-03 10:17:48 +0100
committerJason Zaugg <jzaugg@gmail.com>2012-03-03 10:17:48 +0100
commita180d2e484731ee1bbe5e065930da98d0f36dfb9 (patch)
tree72a9c7776469b38a6467bc24c566ba13e126388e /src
parentd852612c3537f2e4506dd838c719d44a3031679d (diff)
downloadscala-a180d2e484731ee1bbe5e065930da98d0f36dfb9.tar.gz
scala-a180d2e484731ee1bbe5e065930da98d0f36dfb9.tar.bz2
scala-a180d2e484731ee1bbe5e065930da98d0f36dfb9.zip
Handle empty format specifiers in the formatting interpolator.
f"${foo}" is treated like f"${foo}%s".
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/StringContext.scala13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/library/scala/StringContext.scala b/src/library/scala/StringContext.scala
index 8ca312afc5..1b01355108 100644
--- a/src/library/scala/StringContext.scala
+++ b/src/library/scala/StringContext.scala
@@ -46,10 +46,10 @@ case class StringContext(parts: String*) {
checkLengths(args: _*)
val pi = parts.iterator
val ai = args.iterator
- val bldr = new java.lang.StringBuilder(treatEscapes(pi.next))
+ val bldr = new java.lang.StringBuilder(treatEscapes(pi.next()))
while (ai.hasNext) {
bldr append ai.next
- bldr append treatEscapes(pi.next)
+ bldr append treatEscapes(pi.next())
}
bldr.toString
}
@@ -89,11 +89,12 @@ case class StringContext(parts: String*) {
val bldr = new java.lang.StringBuilder
val args1 = new ArrayBuffer[Any]
def copyString(first: Boolean): Unit = {
- val str = treatEscapes(pi.next)
+ val str = treatEscapes(pi.next())
+ val strIsEmpty = str.length == 0
var start = 0
var idx = 0
if (!first) {
- if ((str charAt 0) != '%')
+ if (strIsEmpty || (str charAt 0) != '%')
bldr append "%s"
idx = 1
}
@@ -106,11 +107,11 @@ case class StringContext(parts: String*) {
}
idx += 1
}
- bldr append (str substring (start, idx))
+ if (!strIsEmpty) bldr append (str substring (start, idx))
}
copyString(first = true)
while (pi.hasNext) {
- args1 += ai.next
+ args1 += ai.next()
copyString(first = false)
}
bldr.toString format (args1: _*)