summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBurak Emir <emir@epfl.ch>2006-10-12 09:48:14 +0000
committerBurak Emir <emir@epfl.ch>2006-10-12 09:48:14 +0000
commit1a3ed197d17024b02d2af333ed37d08e6e1c6b72 (patch)
tree965e78be9d7aef89c597b8214094941fb7b89c30 /src
parent4a26ab7d81ebc8c1cc7b07b00475ccdc42173482 (diff)
downloadscala-1a3ed197d17024b02d2af333ed37d08e6e1c6b72.tar.gz
scala-1a3ed197d17024b02d2af333ed37d08e6e1c6b72.tar.bz2
scala-1a3ed197d17024b02d2af333ed37d08e6e1c6b72.zip
fixed #774, xml patterns and error handling
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala29
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala5
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/SymbolicXMLBuilder.scala3
3 files changed, 5 insertions, 32 deletions
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(':')