X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Ftypecheck%2FTcEnv.lhs;h=59d60ebf599d5cc6f480b5e83b77981e96f634ee;hp=6e5f381d1cf93fe72681314ab1ed241e4d473838;hb=b00b5bc04ff36a551552470060064f0b7d84ca30;hpb=2ce87c70529c2a75071161bd3d22b029f003ba36 diff --git a/compiler/typecheck/TcEnv.lhs b/compiler/typecheck/TcEnv.lhs index 6e5f381..59d60eb 100644 --- a/compiler/typecheck/TcEnv.lhs +++ b/compiler/typecheck/TcEnv.lhs @@ -45,7 +45,7 @@ module TcEnv( import HsSyn ( LRuleDecl, LHsBinds, LSig, LHsTyVarBndr, HsTyVarBndr(..), pprLHsBinds, - idCoercion, (<.>) ) + idHsWrapper, (<.>) ) import TcIface ( tcImportDecl ) import IfaceEnv ( newGlobalBinder ) import TcRnMonad @@ -66,8 +66,7 @@ import InstEnv ( Instance, DFunId, instanceDFunId, instanceHead ) import DataCon ( DataCon ) import TyCon ( TyCon ) import Class ( Class ) -import Name ( Name, NamedThing(..), getSrcLoc, nameModule, - nameOccName ) +import Name ( Name, NamedThing(..), getSrcLoc, nameModule_maybe, nameOccName ) import PrelNames ( thFAKE ) import NameEnv import OccName ( mkDFunOcc, occNameString, mkInstTyTcOcc ) @@ -114,13 +113,15 @@ tcLookupGlobal name Nothing -> do -- Should it have been in the local envt? - { let mod = nameModule name - ; if mod == tcg_mod env || mod == thFAKE then - notFound name -- It should be local, so panic - -- The thFAKE possibility is because it - -- might be in a declaration bracket - else - tcImportDecl name -- Go find it in an interface + { case nameModule_maybe name of + Nothing -> notFound name -- Internal names can happen in GHCi + + Just mod | mod == tcg_mod env -- Names from this module + -> notFound name -- should be in tcg_type_env + | mod == thFAKE -- Names bound in TH declaration brackets + -> notFound name -- should be in tcg_env + | otherwise + -> tcImportDecl name -- Go find it in an interface }}}}} tcLookupField :: Name -> TcM Id -- Returns the selector Id @@ -326,7 +327,7 @@ tcExtendIdEnv2 names_w_ids thing_inside tct_level = th_lvl, tct_type = id_ty, tct_co = if isRefineableTy id_ty - then Just idCoercion + then Just idHsWrapper else Nothing }) | (name,id) <- names_w_ids, let id_ty = idType id] le' = extendNameEnvList (tcl_env env) extra_env @@ -614,7 +615,7 @@ newDFunName clas (ty:_) loc occNameString (getDFunTyKey ty) dfun_occ = mkDFunOcc info_string is_boot index - ; newGlobalBinder mod dfun_occ Nothing loc } + ; newGlobalBinder mod dfun_occ loc } newDFunName clas [] loc = pprPanic "newDFunName" (ppr clas <+> ppr loc) \end{code} @@ -629,7 +630,7 @@ newFamInstTyConName tc_name loc = do { index <- nextDFunIndex ; mod <- getModule ; let occ = nameOccName tc_name - ; newGlobalBinder mod (mkInstTyTcOcc index occ) Nothing loc } + ; newGlobalBinder mod (mkInstTyTcOcc index occ) loc } \end{code}