Closed scabug closed 12 years ago
Please see code below. It does not terminate even though the expected result is to stop applying rep when reader is depleted.
import scala.io.Source import scala.util.parsing.combinator.Parsers import scala.util.parsing.input.Reader import scala.util.parsing.input.Position object DemoApp extends App { val parsers = new DemoParsers val reader = new DemoReader(10) val result = parsers.startsWith("s").*(reader) Console println result } class DemoReader(n: Int) extends Reader[String] { def atEnd = n == 0 def first = "s" + n def rest = new DemoReader(n - 1) def pos = new Position { def line = 0; def column = 0; def lineContents = first } } class DemoParsers extends Parsers { type Elem = String def startsWith(prefix: String) = acceptIf(_ startsWith prefix)("Error: " + _) }
Imported From: https://issues.scala-lang.org/browse/SI-5514?orig=1 Reporter: Tymur Porkuian (fixpoint) Affected Versions: 2.9.1
Please see code below. It does not terminate even though the expected result is to stop applying rep when reader is depleted.