summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2014-07-22 14:45:12 +0200
committerAdriaan Moors <adriaan.moors@typesafe.com>2014-07-22 17:59:37 +0200
commitc4360481251fdec0599598c24da400a8bace3247 (patch)
treece56388549bf644a4eb51d1dc08041b35ce4d809 /src/reflect
parent73fb460c1cd20ee97556ec0867d17efaa795d129 (diff)
downloadscala-c4360481251fdec0599598c24da400a8bace3247.tar.gz
scala-c4360481251fdec0599598c24da400a8bace3247.tar.bz2
scala-c4360481251fdec0599598c24da400a8bace3247.zip
Better error message than 'bad symbolic reference'.
Let's not scare people, and try to give them some advice. PS: we should really come up with a better mechanism for testing errors/warnings
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/pickling/UnPickler.scala11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
index b808666360..8d4c3f752f 100644
--- a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
+++ b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
@@ -254,12 +254,13 @@ abstract class UnPickler {
// (4) Call the mirror's "missing" hook.
adjust(mirrorThatLoaded(owner).missingHook(owner, name)) orElse {
// (5) Create a stub symbol to defer hard failure a little longer.
- val fullName = s"${owner.fullName}.$name"
+ val advice = moduleAdvice(s"${owner.fullName}.$name")
val missingMessage =
- s"""|bad symbolic reference to $fullName encountered in class file '$filename'.
- |Cannot access ${name.longString} in ${owner.kindString} ${owner.fullName}. The current classpath may be
- |missing a definition for $fullName, or $filename may have been compiled against a version that's
- |incompatible with the one found on the current classpath.${moduleAdvice(fullName)}""".stripMargin
+ s"""|missing or invalid dependency detected while loading class file '$filename'.
+ |Could not access ${name.longString} in ${owner.kindString} ${owner.fullName},
+ |because it (or its dependencies) are missing. Check your build definition for
+ |missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
+ |A full rebuild may help if '$filename' was compiled against an incompatible version of ${owner.fullName}.$advice""".stripMargin
owner.newStubSymbol(name, missingMessage)
}
}