diff options
author | Paul Phillips <paulp@improving.org> | 2011-05-20 17:53:03 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-05-20 17:53:03 +0000 |
commit | 2beeb23cc71273a2b6a262317a95a06df3491fbf (patch) | |
tree | 126f7b1701af7a0ab6768c28e3b8b5ea75d26060 /src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala | |
parent | be355453547d9a8436d58af7f6ab2a737cc0d376 (diff) | |
download | scala-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.scala | 6 |
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 |