summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/internal/pickling/UnPickler.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2011-08-29 12:45:19 +0000
committerMartin Odersky <odersky@gmail.com>2011-08-29 12:45:19 +0000
commit65bf9178c4c3d92cb9e498d09587e45c14eba594 (patch)
tree16d7a2fef02bf3b11bd3eb6a3fc162016ffce195 /src/compiler/scala/reflect/internal/pickling/UnPickler.scala
parent6f881202be35c7d08ca73054594618cef19d8938 (diff)
downloadscala-65bf9178c4c3d92cb9e498d09587e45c14eba594.tar.gz
scala-65bf9178c4c3d92cb9e498d09587e45c14eba594.tar.bz2
scala-65bf9178c4c3d92cb9e498d09587e45c14eba594.zip
More changes to get Reflect compiler working.
Diffstat (limited to 'src/compiler/scala/reflect/internal/pickling/UnPickler.scala')
-rw-r--r--src/compiler/scala/reflect/internal/pickling/UnPickler.scala16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/compiler/scala/reflect/internal/pickling/UnPickler.scala b/src/compiler/scala/reflect/internal/pickling/UnPickler.scala
index dfae6c50be..335533f1ca 100644
--- a/src/compiler/scala/reflect/internal/pickling/UnPickler.scala
+++ b/src/compiler/scala/reflect/internal/pickling/UnPickler.scala
@@ -38,6 +38,8 @@ abstract class UnPickler /*extends reflect.generic.UnPickler*/ {
} catch {
case ex: IOException =>
throw ex
+ case ex: MissingRequirementError =>
+ throw ex
case ex: Throwable =>
/*if (settings.debug.value)*/ ex.printStackTrace()
throw new RuntimeException("error reading Scala signature of "+filename+": "+ex.getMessage())
@@ -815,14 +817,12 @@ abstract class UnPickler /*extends reflect.generic.UnPickler*/ {
protected def errorBadSignature(msg: String) =
throw new RuntimeException("malformed Scala signature of " + classRoot.name + " at " + readIndex + "; " + msg)
- protected def errorMissingRequirement(msg: String): Nothing =
- if (debug) errorBadSignature(msg)
- else throw new IOException("class file needed by "+classRoot.name+" is missing.\n"+msg)
-
- protected def errorMissingRequirement(name: Name, owner: Symbol): Nothing =
- errorMissingRequirement(
- "reference " + (if (name.isTypeName) "type " else "value ") +
- name.decode + " of " + owner.tpe.widen + " refers to nonexisting symbol.")
+ protected def errorMissingRequirement(name: Name, owner: Symbol): Symbol =
+ missingHook(owner, name) orElse {
+ throw new MissingRequirementError(
+ "reference " + (if (name.isTypeName) "type " else "value ") +
+ name.decode + " of " + owner.tpe.widen)
+ }
def inferMethodAlternative(fun: Tree, argtpes: List[Type], restpe: Type) {} // can't do it; need a compiler for that.