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/ast/Desugar.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/ast/Desugar.scala')
-rw-r--r-- | src/dotty/tools/dotc/ast/Desugar.scala | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/dotty/tools/dotc/ast/Desugar.scala b/src/dotty/tools/dotc/ast/Desugar.scala index d7ae1bf85..1bfbcdbeb 100644 --- a/src/dotty/tools/dotc/ast/Desugar.scala +++ b/src/dotty/tools/dotc/ast/Desugar.scala @@ -889,7 +889,15 @@ object desugar { Apply( ref(defn.SymbolClass.companionModule.termRef), Literal(Constant(str)) :: Nil) - case InterpolatedString(id, strs, elems) => + case InterpolatedString(id, segments) => + val strs = segments map { + case ts: Thicket => ts.trees.head + case t => t + } + val elems = segments flatMap { + case ts: Thicket => ts.trees.tail + case t => Nil + } Apply(Select(Apply(Ident(nme.StringContext), strs), id), elems) case InfixOp(l, op, r) => if (ctx.mode is Mode.Type) @@ -1054,8 +1062,8 @@ object desugar { ctx.error("illegal variable in pattern alternative", vble.pos) case Annotated(arg, _) => collect(arg) - case InterpolatedString(_, _, elems) => - elems foreach collect + case InterpolatedString(_, segments) => + segments foreach collect case InfixOp(left, _, right) => collect(left) collect(right) |