X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=ghc%2Fcompiler%2Frename%2FRnEnv.lhs;h=80b617484054bc5c9b248828f7c62b6608bcf90c;hb=798374a5fa613d622b70cd4c37bb97f203abb6ba;hp=15a46bfd9d51c985c4c2c263f3afa23003c230d6;hpb=794f1a1d1a11e5a8447e041bfbac37e5c3fb7cc1;p=ghc-hetmet.git diff --git a/ghc/compiler/rename/RnEnv.lhs b/ghc/compiler/rename/RnEnv.lhs index 15a46bf..80b6174 100644 --- a/ghc/compiler/rename/RnEnv.lhs +++ b/ghc/compiler/rename/RnEnv.lhs @@ -452,7 +452,14 @@ lookupBndrRn rdr_name case lookupRdrEnv global_env (qualifyRdrName mod rdr_name) of Just (name:rest) -> ASSERT( null rest ) returnRn name - Nothing -> pprPanic "lookupBndrRn" (ppr mod <+> ppr rdr_name) + Nothing -> -- Almost always this case is a compiler bug. + -- But consider a type signature that doesn't have + -- a corresponding binder: + -- module M where { f :: Int->Int } + -- We use lookupSigOccRn, which uses lookupBndrRn (for good reasons) + -- and we don't want to panic. So we report an out-of-scope error + failWithRn (mkUnboundName rdr_name) + (unknownNameErr rdr_name) } -- lookupOccRn looks up an occurrence of a RdrName