summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2009-10-12 10:17:51 +0000
committerMartin Odersky <odersky@gmail.com>2009-10-12 10:17:51 +0000
commitbf02e46f2ae1fde75f28da909b8a6e23383cec9b (patch)
treec2116e7dd40e0206c9e3ff0233034c3ecc8a0a8d /src/compiler
parentf75ee36c6fb4386eb89f19c40dfa000076aa9307 (diff)
downloadscala-bf02e46f2ae1fde75f28da909b8a6e23383cec9b.tar.gz
scala-bf02e46f2ae1fde75f28da909b8a6e23383cec9b.tar.bz2
scala-bf02e46f2ae1fde75f28da909b8a6e23383cec9b.zip
Fixed #2099.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala b/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala
index 2b4d7d33de..e26e8d41ca 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/UnPickler.scala
@@ -201,7 +201,7 @@ abstract class UnPickler {
// the "case Apply" in readTree() takes care of selecting the correct alternative
// after parsing the arguments.
if (sym == NoSymbol && !owner.hasFlag(OVERLOADED)) {
- errorBadSignature(
+ errorMissingRequirement(
"reference " + (if (name.isTypeName) "type " else "value ") +
name.decode + " of " + owner + " refers to nonexisting symbol.")
}
@@ -813,6 +813,10 @@ abstract class UnPickler {
private def errorBadSignature(msg: String) =
throw new RuntimeException("malformed Scala signature of " + classRoot.name + " at " + readIndex + "; " + msg)
+ private def errorMissingRequirement(msg: String) =
+ if (settings.debug.value) errorBadSignature(msg)
+ else throw new IOException("class file needed by "+classRoot.name+" is missing.\n"+msg)
+
private class LazyTypeRef(i: Int) extends LazyType {
private val definedAtRunId = currentRunId
private val p = phase