diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-03-03 10:17:48 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-03-03 10:17:48 +0100 |
commit | a180d2e484731ee1bbe5e065930da98d0f36dfb9 (patch) | |
tree | 72a9c7776469b38a6467bc24c566ba13e126388e /src/library | |
parent | d852612c3537f2e4506dd838c719d44a3031679d (diff) | |
download | scala-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/library')
-rw-r--r-- | src/library/scala/StringContext.scala | 13 |
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: _*) |