aboutsummaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2017-02-01 13:46:32 +1100
committerGitHub <noreply@github.com>2017-02-01 13:46:32 +1100
commitbb2e99cdfa9876561df912d26e9870526de3dd5d (patch)
treefff5f6a6fe011a388ee8896924968a882ecbbdc7 /compiler
parentf85e55226cb9d70429636ffe09e3ca13f1d253ef (diff)
parent1231dd5abc0bd42403f5386460de2026e678e88b (diff)
downloaddotty-bb2e99cdfa9876561df912d26e9870526de3dd5d.tar.gz
dotty-bb2e99cdfa9876561df912d26e9870526de3dd5d.tar.bz2
dotty-bb2e99cdfa9876561df912d26e9870526de3dd5d.zip
Merge pull request #1914 from dotty-staging/fix-treemap
Fix incorrect flatten of thicket inside interpolated string in UntpdTreeMap
Diffstat (limited to 'compiler')
-rw-r--r--compiler/src/dotty/tools/dotc/ast/untpd.scala2
-rw-r--r--compiler/test/dotty/tools/dotc/ast/UntypedTreeMapTest.scala32
2 files changed, 33 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/dotc/ast/untpd.scala b/compiler/src/dotty/tools/dotc/ast/untpd.scala
index f3ffce8f8..37dc32c0e 100644
--- a/compiler/src/dotty/tools/dotc/ast/untpd.scala
+++ b/compiler/src/dotty/tools/dotc/ast/untpd.scala
@@ -476,7 +476,7 @@ object untpd extends Trees.Instance[Untyped] with UntypedTreeInfo {
case SymbolLit(str) =>
cpy.SymbolLit(tree)(str)
case InterpolatedString(id, segments) =>
- cpy.InterpolatedString(tree)(id, transform(segments))
+ cpy.InterpolatedString(tree)(id, segments.map(transform(_)))
case Function(args, body) =>
cpy.Function(tree)(transform(args), transform(body))
case InfixOp(left, op, right) =>
diff --git a/compiler/test/dotty/tools/dotc/ast/UntypedTreeMapTest.scala b/compiler/test/dotty/tools/dotc/ast/UntypedTreeMapTest.scala
new file mode 100644
index 000000000..9e7402968
--- /dev/null
+++ b/compiler/test/dotty/tools/dotc/ast/UntypedTreeMapTest.scala
@@ -0,0 +1,32 @@
+package dotty.tools
+package dotc
+package ast
+
+import org.junit.Test
+import org.junit.Assert._
+
+import dotc.core.Contexts._
+import dotc.parsing.Parsers.Parser
+import dotc.util.SourceFile
+
+class UntpdTreeMapTest extends DottyTest {
+
+ import untpd._
+
+ def parse(code: String): Tree = {
+ val (_, stats) = new Parser(new SourceFile("<meta>", code.toCharArray)).templateStatSeq()
+ stats match { case List(stat) => stat; case stats => untpd.Thicket(stats) }
+ }
+
+ @Test
+ def testMapInterpolatedString = {
+ val tree = parse(""" q"hello ${2017}!" """)
+ val identity = new UntypedTreeMap {
+ override def transform(tree: Tree)(implicit ctx: Context): Tree = tree match {
+ case _ => super.transform(tree)
+ }
+ }
+
+ assertEquals(tree.toString, identity.transform(tree).toString)
+ }
+}