summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-05-20 17:53:03 +0000
committerPaul Phillips <paulp@improving.org>2011-05-20 17:53:03 +0000
commit2beeb23cc71273a2b6a262317a95a06df3491fbf (patch)
tree126f7b1701af7a0ab6768c28e3b8b5ea75d26060 /src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
parentbe355453547d9a8436d58af7f6ab2a737cc0d376 (diff)
downloadscala-2beeb23cc71273a2b6a262317a95a06df3491fbf.tar.gz
scala-2beeb23cc71273a2b6a262317a95a06df3491fbf.tar.bz2
scala-2beeb23cc71273a2b6a262317a95a06df3491fbf.zip
Fix #4599: XMLEventReader issue with input stream.
Makes MarkupParser.nextch lazy, only reaching out for the next char when calling ch or eof. To make it possible, nextch now returns Unit instead of Char. As it happens, that's how it is used almost everywhere. Contributed by Daniel Sobral, no review.
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala')
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala b/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
index 6c025e8443..2cc2b598d3 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
@@ -76,8 +76,8 @@ trait MarkupParsers {
var tmppos : Position = NoPosition
def ch = input.ch
/** this method assign the next character to ch and advances in input */
- def nextch = { val result = input.ch; input.nextChar(); result }
- def ch_returning_nextch = nextch
+ def nextch() { input.nextChar() }
+ def ch_returning_nextch = { val result = ch; input.nextChar(); result }
def mkProcInstr(position: Position, name: String, text: String): Tree =
parser.symbXMLBuilder.procInstr(position, name, text)
@@ -398,7 +398,9 @@ trait MarkupParsers {
def reportSyntaxError(pos: Int, str: String) = parser.syntaxError(pos, str)
def reportSyntaxError(str: String) = {
reportSyntaxError(curOffset, "in XML literal: " + str)
+ val result = ch
nextch
+ result
}
/** '<' xPattern ::= Name [S] { xmlPattern | '{' pattern3 '}' } ETag