diff options
author | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2015-03-24 15:09:29 -0700 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2015-03-24 15:09:29 -0700 |
commit | de4edd4f5ff4d584ce16054fdef1f562237e4d0e (patch) | |
tree | 70d8a6117b49ba3d33a98768a1ada09cc950d131 | |
parent | 2dc40cc7d7d956a510a9278ab236014f3fb564bc (diff) | |
parent | bdc0b6313e116d9627c423f2267a423fa666334e (diff) | |
download | scala-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
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/icode/GenICode.scala | 16 |
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 } } } |