summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean McDirmid <sean.mcdirmid@gmail.com>2007-09-20 08:15:36 +0000
committerSean McDirmid <sean.mcdirmid@gmail.com>2007-09-20 08:15:36 +0000
commit18b2e053aeb24e6935b28fe58aed56c03d0195db (patch)
tree94018e6557ae2e89395861808052969871d9465c
parent151acf12ef82ed73dbb400536bb86b2cabdd9ac4 (diff)
downloadscala-18b2e053aeb24e6935b28fe58aed56c03d0195db.tar.gz
scala-18b2e053aeb24e6935b28fe58aed56c03d0195db.tar.bz2
scala-18b2e053aeb24e6935b28fe58aed56c03d0195db.zip
Fixing semi-colon inference in XML.
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala2
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala8
-rw-r--r--src/compiler/scala/tools/nsc/symtab/GenerateIdeMaps.scala7
-rw-r--r--src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala5
-rw-r--r--src/compiler/scala/tools/nsc/util/SourceFile.scala4
5 files changed, 20 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala b/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
index a6c3d85d71..3753f8abb9 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/MarkupParsers.scala
@@ -599,7 +599,9 @@ trait MarkupParsers {self: Parsers =>
def xEmbeddedExpr: Tree = {
xEmbeddedBlock = false
parser.in.resume(LBRACE)
+ parser.in.sepRegions = RBRACE :: parser.in.sepRegions
val b = parser.block() //p.expr(true,false);
+ parser.in.sepRegions = parser.in.sepRegions.tail
if (parser.in.token != RBRACE) {
input = parser.in.flush
reportSyntaxError(" expected end of Scala block")
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index 582d4646e6..bcbb26ad5c 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -77,13 +77,13 @@ trait Parsers extends NewScanners with MarkupParsers {
xmlp0 = new MarkupParser(this, true)
xmlp0
}
- private var xmlp0: MarkupParser = null
- def xmlLiteral : Tree = xmlp.xLiteral
- def xmlLiteralPattern : Tree = xmlp.xLiteralPattern
- object symbXMLBuilder extends SymbolicXMLBuilder(treeBuilder, UnitParser.this, true) { // DEBUG choices
+ object symbXMLBuilder extends SymbolicXMLBuilder(treeBuilder, this, true) { // DEBUG choices
val global: Parsers.this.global.type = Parsers.this.global
def freshName(prefix: String): Name = UnitParser.this.freshName(NoPosition, prefix)
}
+ private var xmlp0: MarkupParser = null
+ def xmlLiteral : Tree = xmlp.xLiteral
+ def xmlLiteralPattern : Tree = xmlp.xLiteralPattern
}
// parser constants, here so they don't pollute parser debug listing
private object ParserConfiguration {
diff --git a/src/compiler/scala/tools/nsc/symtab/GenerateIdeMaps.scala b/src/compiler/scala/tools/nsc/symtab/GenerateIdeMaps.scala
index 73522c26b3..09fbf6111a 100644
--- a/src/compiler/scala/tools/nsc/symtab/GenerateIdeMaps.scala
+++ b/src/compiler/scala/tools/nsc/symtab/GenerateIdeMaps.scala
@@ -383,7 +383,7 @@ abstract class GenerateIdeMaps extends SubComponent {
})
}
- def sym2url(sym : Symbol) : String = {
+ def sym2url(sym : Symbol) : String = try {
assert(!isRoot(sym))
assert(sym != sym.owner)
if (sym.isModuleClass) {
@@ -401,7 +401,12 @@ abstract class GenerateIdeMaps extends SubComponent {
if (sym.isMethod) methodSig(sym.info)
else if (!sym.name.isTypeName) ";" else ""
}
+ } catch {
+ case e : Throwable =>
+ e.printStackTrace
+ throw new Error("Could not convert " + sym.fullNameString + " to URL")
}
+
def url2sym(paths : List[String], owner : Symbol) : Symbol = {
if (paths.isEmpty) owner
else {
diff --git a/src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala b/src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala
index 9fe67341cb..f341452095 100644
--- a/src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala
+++ b/src/compiler/scala/tools/nsc/symtab/SymbolLoaders.scala
@@ -270,6 +270,11 @@ abstract class SymbolLoaders {
protected def completeSourcefile(root : Symbol, loader : SourcefileLoader)(f : => Unit) : Unit = f
class ClassfileLoader(val classFile: AbstractFile, override val sourceFile: AbstractFile, sourcePath0: AbstractFile) extends SymbolLoader {
+ if (sourcePath0 == null) {
+ assert(true)
+ assert(true)
+ }
+
private object classfileParser extends ClassfileParser {
val global: SymbolLoaders.this.global.type = SymbolLoaders.this.global
override def sourcePath = sourcePath0 /* could be null */
diff --git a/src/compiler/scala/tools/nsc/util/SourceFile.scala b/src/compiler/scala/tools/nsc/util/SourceFile.scala
index 4f4694b6b7..df74995d64 100644
--- a/src/compiler/scala/tools/nsc/util/SourceFile.scala
+++ b/src/compiler/scala/tools/nsc/util/SourceFile.scala
@@ -70,7 +70,9 @@ class BatchSourceFile(val file : AbstractFile, _content : Array[Char]) extends S
compiler.syntaxAnalyzer.isIdentifierPart(content(i)))) i = i + 1
assert(i > offset)
- Some(new String(content, offset, i - offset))
+ if (i <= content.length)
+ Some(new String(content, offset, i - offset))
+ else None
case _ => super.identifier(pos, compiler)
}