diff options
author | Aleksandar Prokopec <axel22@gmail.com> | 2012-05-04 17:50:39 +0200 |
---|---|---|
committer | Aleksandar Prokopec <axel22@gmail.com> | 2012-05-04 18:51:34 +0200 |
commit | 37c157c91f9240b562faa437dbda18bcb435e0ee (patch) | |
tree | 0066203b1d8ba729d5de27eb324ea4a922148cee /test/files/run/t5514.scala | |
parent | f146d5826fc335ee1ca9c285d69086a7475cb71e (diff) | |
download | scala-37c157c91f9240b562faa437dbda18bcb435e0ee.tar.gz scala-37c157c91f9240b562faa437dbda18bcb435e0ee.tar.bz2 scala-37c157c91f9240b562faa437dbda18bcb435e0ee.zip |
Fixes SI-5514.
The acceptIf and acceptMatch parsers now check for end of input.
Review by moors.
Diffstat (limited to 'test/files/run/t5514.scala')
-rw-r--r-- | test/files/run/t5514.scala | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/files/run/t5514.scala b/test/files/run/t5514.scala new file mode 100644 index 0000000000..efd5ba6cb9 --- /dev/null +++ b/test/files/run/t5514.scala @@ -0,0 +1,35 @@ + + + +import scala.io.Source +import scala.util.parsing.combinator.Parsers +import scala.util.parsing.input.Reader +import scala.util.parsing.input.Position + + + +class DemoReader(n: Int) extends Reader[String] { + def atEnd = n == 0 + def first = if (n >= 0) "s" + n else throw new IllegalArgumentException("No more input.") + def rest = new DemoReader(n - 1) + def pos = new Position { + def line = 0 + def column = 0 + def lineContents = first + } + println("constructed reader: " + n) +} + + +object Test extends App with Parsers { + type Elem = String + def startsWith(prefix: String) = acceptIf(_ startsWith prefix)("Error: " + _) + + val resrep = startsWith("s").*(new DemoReader(10)) + Console println resrep + + val resrep5 = repN(5, startsWith("s"))(new DemoReader(10)) + Console println resrep5 +} + + |