diff --git a/compiler/src/dotty/tools/dotc/parsing/xml/MarkupParsers.scala b/compiler/src/dotty/tools/dotc/parsing/xml/MarkupParsers.scala
index cef9cb488a4e..64f54aa0b521 100644
--- a/compiler/src/dotty/tools/dotc/parsing/xml/MarkupParsers.scala
+++ b/compiler/src/dotty/tools/dotc/parsing/xml/MarkupParsers.scala
@@ -362,18 +362,18 @@ object MarkupParsers {
tmppos = Span(curOffset) // Iuli: added this line, as it seems content_LT uses tmppos when creating trees
content_LT(ts)
- // parse more XML ?
+ // parse more XML?
if (charComingAfter(xSpaceOpt()) == '<') {
- xSpaceOpt()
- while (ch == '<') {
- nextch()
- ts append element
+ while {
xSpaceOpt()
- }
+ nextch()
+ ts.append(element)
+ charComingAfter(xSpaceOpt()) == '<'
+ } do ()
handle.makeXMLseq(Span(start, curOffset, start), ts)
}
else {
- assert(ts.length == 1)
+ assert(ts.length == 1, "Require one tree")
ts(0)
}
},
diff --git a/tests/run/xml.scala b/tests/run/xml.scala
new file mode 100644
index 000000000000..a1ff9998ec93
--- /dev/null
+++ b/tests/run/xml.scala
@@ -0,0 +1,42 @@
+
+object Test {
+ import scala.xml.NodeBuffer
+
+ def main(args: Array[String]): Unit = {
+ val xml = world
+ assert(xml.toString == "helloworld")
+ val nodeBuffer: NodeBuffer =
+ assert(nodeBuffer.mkString == "helloworld")
+ }
+}
+package scala.xml {
+ type MetaData = AnyRef
+
+ trait NamespaceBinding
+ object TopScope extends NamespaceBinding
+ object Null
+ abstract class Node {
+ def label: String
+ def child: Seq[Node]
+ override def toString = label + child.mkString
+ }
+ class Elem(prefix: String, val label: String, attributes1: MetaData, scope: NamespaceBinding, minimizeEmpty: Boolean, val child: Node*) extends Node
+ class NodeBuffer extends Seq[Node] {
+ val nodes = scala.collection.mutable.ArrayBuffer.empty[Node]
+ def &+(o: Any): NodeBuffer =
+ o match {
+ case n: Node => nodes.addOne(n) ; this
+ case t: Text => nodes.addOne(Atom(t)) ; this
+ }
+ // Members declared in scala.collection.IterableOnce
+ def iterator: Iterator[scala.xml.Node] = nodes.iterator
+ // Members declared in scala.collection.SeqOps
+ def apply(i: Int): scala.xml.Node = nodes(i)
+ def length: Int = nodes.length
+ }
+ case class Text(text: String)
+ case class Atom(t: Text) extends Node {
+ def label = t.text
+ def child = Nil
+ }
+}