From 1a3ed197d17024b02d2af333ed37d08e6e1c6b72 Mon Sep 17 00:00:00 2001 From: Burak Emir Date: Thu, 12 Oct 2006 09:48:14 +0000 Subject: fixed #774, xml patterns and error handling --- .../scala/tools/nsc/ast/parser/MarkupParsers.scala | 29 +++------------------- .../scala/tools/nsc/ast/parser/Parsers.scala | 5 +--- .../tools/nsc/ast/parser/SymbolicXMLBuilder.scala | 3 --- 3 files changed, 5 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala b/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala index ac82c14187..2361c03d0e 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala @@ -267,7 +267,6 @@ class MarkupParser(unit: CompilationUnit, s: Scanner, p: Parser, presWS: boolean * @postcond: xEmbeddedBlock == false! */ def content_BRACE(p: Int, ts:mutable.ArrayBuffer[Tree]): Unit = { - //Console.println("content_BRACE, p = "+s.currentPos) if (xCheckEmbeddedBlock) ts.append(xEmbeddedExpr) else { @@ -510,31 +509,12 @@ class MarkupParser(unit: CompilationUnit, s: Scanner, p: Parser, presWS: boolean init; val oldMode = handle.isPattern; handle.isPattern = true; - val pos = s.currentPos; var tree = xPattern; xSpaceOpt; - //if (ch == '<') { - var ts: List[Tree] = List(); - ts = tree :: ts; - - s.next.token = EMPTY; s.nextToken(); /* ?????????? */ - while( token == Tokens.XMLSTART ) {// ??????????????????????????? - //while (ch == '<' /* && lookahead != '-'*/) { - nextch; - //Console.println("DEBUG 2: I am getting char '"+ch+"'"); // DEBUG - ts = xPattern :: ts; - //xSpaceOpt; // ???? - s.next.token = EMPTY; s.nextToken(); /* ?????????? */ - //Console.println("DEBUG 3: resync'ed, token = '"+s+"'"); // DEBUG - } - //Console.println("current token == "+s); - tree = handle.makeXMLseqPat( pos, ts.reverse ); - //} handle.isPattern = oldMode; - //Console.println("out of xLiteralPattern, parsed:"+tree.toString()); - // s.next.token = EMPTY; // ?? - // s.nextToken(); /* s.fetchToken(); */ // ?? + s.next.token = Tokens.EMPTY; + s.nextToken() tree - }catch { + } catch { case _:ArrayIndexOutOfBoundsException => s.syntaxError(debugLastStartElement.top._1, "missing end tag in XML literal for <" @@ -549,7 +529,6 @@ class MarkupParser(unit: CompilationUnit, s: Scanner, p: Parser, presWS: boolean reportSyntaxError(" expected end of Scala block"); } init; - //Console.println("[out of xScalaExpr s.ch = "+s.ch+" ch="+ch+"]"); return b } @@ -579,7 +558,7 @@ class MarkupParser(unit: CompilationUnit, s: Scanner, p: Parser, presWS: boolean } def reportSyntaxError(str: String) = { - s.syntaxError("in XML literal: " + str) + s.syntaxError(pos-1, "in XML literal: " + str) nextch } diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala index 9c82212513..2cfad833a7 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala @@ -918,7 +918,6 @@ trait Parsers requires SyntaxAnalyzer { t = literal(false, false) case XMLSTART => t = xmlp.xLiteral - //Console.println("successfully parsed XML at "+t); // DEBUG case IDENTIFIER | BACKQUOTED_IDENT | THIS | SUPER => t = path(true, false) case LPAREN => @@ -1210,9 +1209,7 @@ trait Parsers requires SyntaxAnalyzer { accept(RPAREN) p case XMLSTART => - val r = xmlp.xLiteralPattern - //Console.println("successfully parsed xml pattern "+r); DEBUG - r + xmlp.xLiteralPattern case _ => if (settings.migrate.value && in.token == MATCH || in.token == REQUIRES || in.token == IMPLICIT) diff --git a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala index da8c487c72..3a14035312 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala @@ -198,9 +198,6 @@ abstract class SymbolicXMLBuilder(make: TreeBuilder, p: Parsers # Parser, preser atPos(pos) { Select(_buffer, _toList) } } - def makeXMLseqPat(pos: int, args: List[Tree]) = - atPos(pos) {Apply(_scala_Seq, args)} - /** returns Some(prefix) if pre:name, None otherwise */ def getPrefix(name: String): Option[String] = { val i = name.indexOf(':') -- cgit v1.2.3