diff --git a/jvm/src/test/scala/scala/xml/parsing/ConstructingParserTest.scala b/jvm/src/test/scala/scala/xml/parsing/ConstructingParserTest.scala
index 413cd9a74..fb8590d00 100644
--- a/jvm/src/test/scala/scala/xml/parsing/ConstructingParserTest.scala
+++ b/jvm/src/test/scala/scala/xml/parsing/ConstructingParserTest.scala
@@ -75,10 +75,22 @@ class ConstructingParserTest {
@Test
def SI6341issue65: Unit = {
val str = """"""
- val cpa = ConstructingParser.fromSource(io.Source.fromString(str), preserveWS = true)
+ val cpa = ConstructingParser.fromSource(Source.fromString(str), preserveWS = true)
val cpadoc = cpa.document()
val ppr = new PrettyPrinter(80,5)
val out = ppr.format(cpadoc.docElem)
assertEquals(str, out)
}
+
+ // https://github.com/scala/scala-xml/issues/541
+ @Test
+ def issue541: Unit = {
+ val xml =
+ """|""".stripMargin
+ val parser = ConstructingParser.fromSource(Source.fromString(xml), preserveWS = true)
+ parser.document().docElem // shouldn't crash
+ }
+
}
diff --git a/shared/src/main/scala/scala/xml/parsing/MarkupParser.scala b/shared/src/main/scala/scala/xml/parsing/MarkupParser.scala
index 95ec2ec55..acd19485e 100755
--- a/shared/src/main/scala/scala/xml/parsing/MarkupParser.scala
+++ b/shared/src/main/scala/scala/xml/parsing/MarkupParser.scala
@@ -58,7 +58,10 @@ trait MarkupParser extends MarkupParserCommon with TokenTests {
protected var curInput: Source = input
// See ticket #3720 for motivations.
- private class WithLookAhead(underlying: Source) extends Source {
+ // As for why it's `private[parsing]` rather than merely `private`, see
+ // https://github.com/scala/scala-xml/issues/541 ; the broader access is necessary,
+ // for now anyway, to work around https://github.com/lampepfl/dotty/issues/13096
+ private[parsing] class WithLookAhead(underlying: Source) extends Source {
private val queue = scala.collection.mutable.Queue[Char]()
def lookahead(): BufferedIterator[Char] = {
val iter = queue.iterator ++ new Iterator[Char] {