diff --git a/compiler/src/dotty/tools/dotc/parsing/xml/MarkupParsers.scala b/compiler/src/dotty/tools/dotc/parsing/xml/MarkupParsers.scala
index 22ef15b6f497..06e8645b82c0 100644
--- a/compiler/src/dotty/tools/dotc/parsing/xml/MarkupParsers.scala
+++ b/compiler/src/dotty/tools/dotc/parsing/xml/MarkupParsers.scala
@@ -373,7 +373,7 @@ object MarkupParsers {
while {
xSpaceOpt()
nextch()
- ts.append(element)
+ content_LT(ts)
charComingAfter(xSpaceOpt()) == '<'
} do ()
handle.makeXMLseq(Span(start, curOffset, start), ts)
diff --git a/tests/run/i16458.scala b/tests/run/i16458.scala
new file mode 100644
index 000000000000..1c4b0365e45e
--- /dev/null
+++ b/tests/run/i16458.scala
@@ -0,0 +1,54 @@
+
+object Test {
+ import scala.xml.*
+ def main(args: Array[String]): Unit = {
+ val xml =
FooBar
+ assert(
+ xml match
+ case Seq(elm: Elem, comment: Comment) if
+ elm.label == "div" &&
+ elm.child(0) == Atom(Text("FooBar")) &&
+ comment.label == " /.modal-content "
+ => true
+ case _ => false
+ ,
+ xml
+ )
+ }
+}
+
+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 Comment(commentText: String) extends Node{
+ def label = commentText
+ def child = Nil
+ }
+ 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
+ }
+}
\ No newline at end of file