summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2015-03-24 15:09:29 -0700
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2015-03-24 15:09:29 -0700
commitde4edd4f5ff4d584ce16054fdef1f562237e4d0e (patch)
tree70d8a6117b49ba3d33a98768a1ada09cc950d131 /src
parent2dc40cc7d7d956a510a9278ab236014f3fb564bc (diff)
parentbdc0b6313e116d9627c423f2267a423fa666334e (diff)
downloadscala-de4edd4f5ff4d584ce16054fdef1f562237e4d0e.tar.gz
scala-de4edd4f5ff4d584ce16054fdef1f562237e4d0e.tar.bz2
scala-de4edd4f5ff4d584ce16054fdef1f562237e4d0e.zip
Merge pull request #4397 from retronym/topic/icode-diagnostic
Improve diagnostic error on failed genLoadIdent
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/GenICode.scala16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
index cf52ad6636..185fd93501 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
@@ -876,13 +876,15 @@ abstract class GenICode extends SubComponent {
genLoadModule(ctx, tree)
generatedType = toTypeKind(sym.info)
} else {
- try {
- val Some(l) = ctx.method.lookupLocal(sym)
- ctx.bb.emit(LOAD_LOCAL(l), tree.pos)
- generatedType = l.kind
- } catch {
- case ex: MatchError =>
- abort("symbol " + sym + " does not exist in " + ctx.method)
+ ctx.method.lookupLocal(sym) match {
+ case Some(l) =>
+ ctx.bb.emit(LOAD_LOCAL(l), tree.pos)
+ generatedType = l.kind
+ case None =>
+ val saved = settings.uniqid
+ settings.uniqid.value = true
+ try abort(s"symbol $sym does not exist in ${ctx.method}, which contains locals ${ctx.method.locals.mkString(",")}")
+ finally settings.uniqid.value = saved
}
}
}