X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypecheck%2FTcRnMonad.lhs;h=3b7a2e8379f1028b39bc157f0636dd6ec946bc73;hb=00cc4d8773d1138f7b3b3ac122f3c98a6f93e68a;hp=5ada68a90b3bfa8a35206dbd224b9643af124e47;hpb=5d541fe7c43a1dc4c1b2dd9ee49e64238b0754ca;p=ghc-hetmet.git diff --git a/compiler/typecheck/TcRnMonad.lhs b/compiler/typecheck/TcRnMonad.lhs index 5ada68a..3b7a2e8 100644 --- a/compiler/typecheck/TcRnMonad.lhs +++ b/compiler/typecheck/TcRnMonad.lhs @@ -19,6 +19,7 @@ import SrcLoc ( noSrcLoc ) import TysWiredIn ( intTy, stringTy, mkListTy, unitTy, boolTy ) import PrelNames ( breakpointJumpName, breakpointCondJumpName ) import NameEnv ( mkNameEnv ) +import TcEnv ( tcExtendIdEnv ) #endif import HsSyn ( emptyLHsBinds ) @@ -31,11 +32,13 @@ import Module ( Module, moduleName ) import RdrName ( GlobalRdrEnv, LocalRdrEnv, emptyLocalRdrEnv ) import Name ( Name, mkInternalName, tidyNameOcc, nameOccName, getSrcLoc ) import Type ( Type ) -import TcType ( tcIsTyVarTy, tcGetTyVar ) +import TcType ( TcType, tcIsTyVarTy, tcGetTyVar ) import NameEnv ( extendNameEnvList, nameEnvElts ) import InstEnv ( emptyInstEnv ) +import FamInstEnv ( emptyFamInstEnv ) import Var ( setTyVarName ) +import Id ( mkSysLocal ) import VarSet ( emptyVarSet ) import VarEnv ( TidyEnv, emptyTidyEnv, extendVarEnv ) import ErrUtils ( Message, Messages, emptyMessages, errorsFound, @@ -47,12 +50,13 @@ import NameSet ( NameSet, emptyDUs, emptyNameSet, unionNameSets, addOneToNameSe import OccName ( emptyOccEnv, tidyOccName ) import Bag ( emptyBag ) import Outputable -import UniqSupply ( UniqSupply, mkSplitUniqSupply, uniqFromSupply, splitUniqSupply ) +import UniqSupply ( UniqSupply, mkSplitUniqSupply, uniqFromSupply, uniqsFromSupply, splitUniqSupply ) import UniqFM ( unitUFM ) import Unique ( Unique ) import DynFlags ( DynFlags(..), DynFlag(..), dopt, dopt_set, dopt_unset, GhcMode ) import StaticFlags ( opt_PprStyle_Debug ) +import FastString ( FastString ) import Bag ( snocBag, unionBags ) import Panic ( showException ) @@ -101,6 +105,7 @@ initTc hsc_env hsc_src mod do_this tcg_type_env = hsc_global_type_env hsc_env, tcg_type_env_var = type_env_var, tcg_inst_env = emptyInstEnv, + tcg_fam_inst_env = emptyFamInstEnv, tcg_inst_uses = dfuns_var, tcg_th_used = th_var, tcg_exports = emptyNameSet, @@ -187,7 +192,7 @@ addBreakpointBindings thing_inside = mkGlobalId VanillaGlobal breakpointCondJumpName (basicType (FunTy boolTy)) vanillaIdInfo } - ; extendIdEnv [breakpointJumpId, breakpointCondJumpId] thing_inside} + ; tcExtendIdEnv [breakpointJumpId, breakpointCondJumpId] thing_inside} #else = thing_inside #endif @@ -354,8 +359,13 @@ newUniqueSupply newLocalName :: Name -> TcRnIf gbl lcl Name newLocalName name -- Make a clone - = newUnique `thenM` \ uniq -> - returnM (mkInternalName uniq (nameOccName name) (getSrcLoc name)) + = do { uniq <- newUnique + ; return (mkInternalName uniq (nameOccName name) (getSrcLoc name)) } + +newSysLocalIds :: FastString -> [TcType] -> TcRnIf gbl lcl [TcId] +newSysLocalIds fs tys + = do { us <- newUniqueSupply + ; return (zipWith (mkSysLocal fs) (uniqsFromSupply us) tys) } \end{code}