diff options
author | Martin Odersky <odersky@gmail.com> | 2016-09-24 19:13:20 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-09-24 19:16:29 +0200 |
commit | 962377ebc23a4c6a2757bee99e6558dd6a93c067 (patch) | |
tree | 19134d4bfb0e804110b74c623e2460f51891af2a /src/dotty/tools/dotc/printing/RefinedPrinter.scala | |
parent | e2e1e8a43123de3c5594bad24af486b730e0b3c7 (diff) | |
download | dotty-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.scala | 14 |
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 { |