X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fiface%2FIfaceEnv.lhs;h=3c1db558649a530313ed73138070be0b7161da77;hb=10ffe4f78dc4bd53d5bc2da1deb8a67669ccb476;hp=40b7d31f138aefdb9756f7a0766aa8c92af77320;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/compiler/iface/IfaceEnv.lhs b/compiler/iface/IfaceEnv.lhs index 40b7d31..3c1db55 100644 --- a/compiler/iface/IfaceEnv.lhs +++ b/compiler/iface/IfaceEnv.lhs @@ -288,9 +288,10 @@ initOrigNames names = foldl extendOrigNameCache emptyModuleEnv names tcIfaceLclId :: OccName -> IfL Id tcIfaceLclId occ = do { lcl <- getLclEnv - ; return (lookupOccEnv (if_id_env lcl) occ - `orElse` - pprPanic "tcIfaceLclId" (ppr occ)) } + ; case (lookupOccEnv (if_id_env lcl) occ) of + Just ty_var -> return ty_var + Nothing -> failIfM (text "Iface id out of scope: " <+> ppr occ) + } refineIfaceIdEnv :: TypeRefinement -> IfL a -> IfL a refineIfaceIdEnv (tv_subst, _) thing_inside @@ -311,9 +312,10 @@ extendIfaceIdEnv ids thing_inside tcIfaceTyVar :: OccName -> IfL TyVar tcIfaceTyVar occ = do { lcl <- getLclEnv - ; return (lookupOccEnv (if_tv_env lcl) occ - `orElse` - pprPanic "tcIfaceTyVar" (ppr occ)) } + ; case (lookupOccEnv (if_tv_env lcl) occ) of + Just ty_var -> return ty_var + Nothing -> failIfM (text "Iface type variable out of scope: " <+> ppr occ) + } extendIfaceTyVarEnv :: [TyVar] -> IfL a -> IfL a extendIfaceTyVarEnv tyvars thing_inside