aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/printing/RefinedPrinter.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-09-24 19:13:20 +0200
committerMartin Odersky <odersky@gmail.com>2016-09-24 19:16:29 +0200
commit962377ebc23a4c6a2757bee99e6558dd6a93c067 (patch)
tree19134d4bfb0e804110b74c623e2460f51891af2a /src/dotty/tools/dotc/printing/RefinedPrinter.scala
parente2e1e8a43123de3c5594bad24af486b730e0b3c7 (diff)
downloaddotty-962377ebc23a4c6a2757bee99e6558dd6a93c067.tar.gz
dotty-962377ebc23a4c6a2757bee99e6558dd6a93c067.tar.bz2
dotty-962377ebc23a4c6a2757bee99e6558dd6a93c067.zip
Make InterpolatedString conform to ordering requirement
Arrange its sub-elements so that they appear strictly left to right.
Diffstat (limited to 'src/dotty/tools/dotc/printing/RefinedPrinter.scala')
-rw-r--r--src/dotty/tools/dotc/printing/RefinedPrinter.scala14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/dotty/tools/dotc/printing/RefinedPrinter.scala b/src/dotty/tools/dotc/printing/RefinedPrinter.scala
index 9744e7026..32d152c2e 100644
--- a/src/dotty/tools/dotc/printing/RefinedPrinter.scala
+++ b/src/dotty/tools/dotc/printing/RefinedPrinter.scala
@@ -446,15 +446,13 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) {
}
case SymbolLit(str) =>
"'" + str
- case InterpolatedString(id, strings, elems) =>
- def interleave(strs: List[Text], elems: List[Text]): Text = ((strs, elems): @unchecked) match {
- case (Nil, Nil) => ""
- case (str :: Nil, Nil) => str
- case (str :: strs1, elem :: elems1) => str ~ elem ~ interleave(strs1, elems1)
+ case InterpolatedString(id, segments) =>
+ def strText(str: Literal) = Str(escapedString(str.const.stringValue))
+ def segmentText(segment: Tree) = segment match {
+ case Thicket(List(str: Literal, expr)) => strText(str) ~ "{" ~ toTextGlobal(expr) ~ "}"
+ case str: Literal => strText(str)
}
- val strTexts = strings map (str => Str(escapedString(str.const.stringValue)))
- val elemsTexts = elems map (elem => "{" ~ toTextGlobal(elem) ~ "}")
- toText(id) ~ "\"" ~ interleave(strTexts, elemsTexts) ~ "\""
+ toText(id) ~ "\"" ~ Text(segments map segmentText, "") ~ "\""
case Function(args, body) =>
var implicitSeen: Boolean = false
def argToText(arg: Tree) = arg match {