diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-07-22 14:45:12 +0200 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-07-22 17:59:37 +0200 |
commit | c4360481251fdec0599598c24da400a8bace3247 (patch) | |
tree | ce56388549bf644a4eb51d1dc08041b35ce4d809 /src | |
parent | 73fb460c1cd20ee97556ec0867d17efaa795d129 (diff) | |
download | scala-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')
-rw-r--r-- | src/reflect/scala/reflect/internal/pickling/UnPickler.scala | 11 |
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) } } |