import Class ( Class )
import CoreSyn ( CoreBind )
import StgSyn ( StgBinding )
-import AbsCSyn ( AbstractC, absCNop )
+import AbsCSyn ( AbstractC )
import PprAbsC ( dumpRealC, writeRealC )
import UniqSupply ( UniqSupply )
-import Module ( Module, moduleString )
+import Module ( Module )
import CmdLineOpts
-import Maybes ( maybeToBool )
-import ErrUtils ( doIfSet, dumpIfSet )
+import ErrUtils ( dumpIfSet )
import Outputable
import IO ( IOMode(..), hClose, openFile, Handle )
\end{code}
import IO ( hPutStr, stderr )
import HsSyn
-import BasicTypes ( NewOrData(..) )
import RdrHsSyn ( RdrNameHsModule )
-import FastString ( mkFastCharString, unpackFS )
+import FastString ( unpackFS )
import StringBuffer ( hGetStringBuffer )
import Parser ( parse )
-import Lex ( PState(..), P, ParseResult(..) )
+import Lex ( PState(..), ParseResult(..) )
import SrcLoc ( mkSrcLoc )
import Rename ( renameModule )
import Desugar ( deSugar )
import SimplCore ( core2core )
import OccurAnal ( occurAnalyseBinds )
-import CoreLint ( endPass )
import CoreUtils ( coreBindsSize )
import CoreTidy ( tidyCorePgm )
import CoreToStg ( topCoreBindsToStg )
-import StgSyn ( collectFinalStgBinders, pprStgBindings )
+import StgSyn ( collectFinalStgBinders )
import SimplStg ( stg2stg )
import CodeGen ( codeGen )
import CodeOutput ( codeOutput )
import Module ( ModuleName, moduleNameUserString )
-import AbsCSyn ( absCNop )
import CmdLineOpts
import ErrUtils ( ghcExit, doIfSet, dumpIfSet )
-import Maybes ( maybeToBool, MaybeErr(..) )
-import TyCon ( isDataTyCon )
-import Class ( classTyCon )
import UniqSupply ( mkSplitUniqSupply )
-import FiniteMap ( emptyFM )
import Outputable
import Char ( isSpace )
#if REPORT_TO_MOTHERLODE && __GLASGOW_HASKELL__ >= 303
import MachCode ( InstrBlock )
import MachMisc ( Instr(..) )
-import PprMach ( pprUserReg, pprInstr ) -- debugging
import MachRegs
import RegAllocInfo
import FiniteMap ( FiniteMap, emptyFM, addListToFM, delListFromFM,
lookupFM, keysFM, eltsFM, mapFM, addToFM_C, addToFM,
listToFM, fmToList, lookupWithDefaultFM )
-import Maybes ( maybeToBool )
import Unique ( mkBuiltinUnique )
-import Util ( mapAccumB )
import OrdList ( unitOL, appOL, fromOL, concatOL )
import Outputable
import Unique ( Unique, Uniquable(..), mkPseudoUnique3 )
import MachRegs
import OrdList ( OrdList, nilOL, isNilOL, unitOL, appOL, toOL,
snocOL, consOL, concatOL )
-import AbsCSyn ( MagicId )
import AbsCUtils ( magicIdPrimRep )
import CallConv ( CallConv )
import CLabel ( isAsmTemp, CLabel, pprCLabel_asm, labelDynamic )
# endif
)
import PrimRep ( PrimRep(..) )
-import SMRep ( SMRep(..) )
import Stix ( StixTree(..), StixReg(..), CodeSegment )
import Panic ( panic )
-import Char ( isDigit )
import GlaExts ( word2Int#, int2Word#, shiftRL#, and#, (/=#) )
-import Outputable ( text, pprPanic, ppr )
+import Outputable ( pprPanic, ppr )
import IOExts ( trace )
\end{code}
import MachMisc
import CLabel ( pprCLabel_asm, externallyVisibleCLabel, labelDynamic )
-import CStrings ( charToC )
-import Maybes ( maybeToBool )
import Stix ( CodeSegment(..), StixTree(..) )
import Char ( isPrint, isDigit )
import Outputable
#include "HsVersions.h"
import List ( partition, sort )
-import OrdList ( unitOL )
import MachMisc
import MachRegs
-import MachCode ( InstrBlock )
-import BitSet ( unitBS, mkBS, minusBS, unionBS, listBS, BitSet )
import CLabel ( pprCLabel_asm, isAsmTemp, CLabel{-instance Ord-} )
import FiniteMap ( addToFM, lookupFM, FiniteMap )
-import PrimRep ( PrimRep(..) )
-import UniqSet -- quite a bit of it
import Outputable
import Constants ( rESERVED_C_STACK_BYTES )
import Unique ( Unique, Uniquable(..) )
import Ratio ( Rational )
import AbsCSyn ( node, tagreg, MagicId(..) )
-import AbsCUtils ( magicIdPrimRep )
import CallConv ( CallConv, pprCallConv )
import CLabel ( mkAsmTempLabel, CLabel, pprCLabel, pprCLabel_asm )
import PrimRep ( PrimRep(..), showPrimRep )
import SMRep ( fixedHdrSize, arrWordsHdrSize, arrPtrsHdrSize )
import UniqSupply ( UniqSupply, splitUniqSupply, uniqFromSupply,
UniqSM, thenUs, returnUs, getUniqueUs )
-import CmdLineOpts ( opt_Static )
import Outputable
\end{code}
import SMRep ( SMRep(..), getSMRepClosureTypeInt )
import Stix -- all of it
import UniqSupply ( returnUs, UniqSM )
-import Outputable ( int )
import BitSet ( intBS )
import Maybes ( maybeToBool )
import {-# SOURCE #-} StixPrim ( amodeToStix )
-import MachMisc
import MachRegs
import AbsCSyn ( CStmtMacro(..), MagicId(..), CAddrMode, tagreg,
CCheckMacro(..) )
import PrimRep ( PrimRep(..) )
import Stix
import UniqSupply ( returnUs, thenUs, UniqSM )
-import Outputable
import CLabel ( mkBlackHoleInfoTableLabel, mkIndStaticInfoLabel,
mkIndInfoLabel, mkUpdInfoLabel, mkSeqInfoLabel,
mkRtsGCEntryLabel, mkStgUpdatePAPLabel )
import StringBuffer ( lexemeToString )
import FastString ( unpackFS )
import BasicTypes ( Boxity(..) )
-import ErrUtils
import UniqFM ( UniqFM, listToUFM, lookupUFM )
import Outputable
import PrimOp ( PrimOp(..), allThePrimOps, primOpRdrName )
import DataCon ( DataCon, dataConId, dataConWrapId )
-import PrimRep ( PrimRep(..) )
import TysPrim -- TYPES
import TysWiredIn
-- others:
import RdrName ( RdrName )
-import Var ( varUnique, Id )
import Name ( Name, OccName, Provenance(..),
NameSpace, tcName, clsName, varName, dataName,
mkKnownKeyGlobal,
import Unique -- *Key stuff
import UniqFM ( UniqFM, listToUFM )
import Util ( isIn )
-import Panic ( panic )
\end{code}
%************************************************************************
#include "HsVersions.h"
import CoreSyn
-import Rules ( ProtoCoreRule(..) )
-import Id ( idUnfolding, mkWildId, isDataConId_maybe )
-import Literal ( Literal(..), isLitLitLit, mkMachInt, mkMachWord, literalType
+import Id ( mkWildId )
+import Literal ( Literal(..), isLitLitLit, mkMachInt, mkMachWord
+ , inIntRange, inWordRange, literalType
, word2IntLit, int2WordLit, char2IntLit, int2CharLit
, float2IntLit, int2FloatLit, double2IntLit, int2DoubleLit
, addr2IntLit, int2AddrLit, float2DoubleLit, double2FloatLit
import PrimOp ( PrimOp(..), primOpOcc )
import TysWiredIn ( trueDataConId, falseDataConId )
import TyCon ( tyConDataConsIfAvailable, isEnumerationTyCon, isNewTyCon )
-import DataCon ( DataCon, dataConTag, dataConRepArity, dataConTyCon, dataConId, fIRST_TAG )
-import CoreUnfold ( maybeUnfoldingTemplate )
+import DataCon ( dataConTag, dataConTyCon, dataConId, fIRST_TAG )
import CoreUtils ( exprIsValue, cheapEqExpr, exprIsConApp_maybe )
import Type ( splitTyConApp_maybe )
import OccName ( occNameUserString)
import PrelNames ( unpackCStringFoldr_RDR )
import Unique ( unpackCStringFoldrIdKey, hasKey )
-import Maybes ( maybeToBool )
-import Char ( ord, chr )
import Bits ( Bits(..) )
-import PrelAddr ( wordToInt )
import Word ( Word64 )
import Outputable
-
-#if __GLASGOW_HASKELL__ > 405
-import PrelAddr ( intToWord )
-#else
-import PrelAddr ( Word(..) )
-import PrelGHC ( int2Word# )
-intToWord :: Int -> Word
-intToWord (I# i#) = W# (int2Word# i#)
-#endif
\end{code}
-
\begin{code}
primOpRule :: PrimOp -> CoreRule
primOpRule op
import TyCon ( TyCon, AlgTyConFlavour(..), ArgVrcs, tyConDataCons,
mkAlgTyCon, mkSynTyCon, mkTupleTyCon, isUnLiftedTyCon
)
-import BasicTypes ( Arity, NewOrData(..), RecFlag(..), Boxity(..), isBoxed )
+import BasicTypes ( Arity, RecFlag(..), Boxity(..), isBoxed )
import Type ( Type, mkTyConTy, mkTyConApp, mkSigmaTy, mkTyVarTys,
mkArrowKinds, boxedTypeKind, unboxedTypeKind,
mkFunTy, mkFunTys,
splitTyConApp_maybe, repType,
TauType, ClassContext )
-import PrimRep ( PrimRep(..) )
import Unique
import CmdLineOpts ( opt_GlasgowExts )
-import Util ( assoc )
-import Panic ( panic )
import Array
alpha_tyvar = [alphaTyVar]
import CmdLineOpts ( opt_AutoSccsOnIndividualCafs )
import CostCentre -- lots of things
-import Id ( Id, mkSysLocal, idType, idName )
+import Id ( Id )
import Module ( Module )
import UniqSupply ( uniqFromSupply, splitUniqSupply, UniqSupply )
import Unique ( Unique )
-import Type ( splitForAllTys, splitTyConApp_maybe )
-import TyCon ( isFunTyCon )
import VarSet
-import UniqSet
-import Name ( isLocallyDefined )
import Util ( removeDups )
import Outputable
import RnNames ( getGlobalNames )
import RnSource ( rnSourceDecls, rnDecl )
import RnIfaces ( getImportedInstDecls, importDecl, mkImportExportInfo, getInterfaceExports,
- getImportedRules, loadHomeInterface, getSlurped, removeContext,
+ getImportedRules, getSlurped, removeContext,
loadBuiltinRules, getDeferredDecls, ImportDeclResult(..)
)
import RnEnv ( availName, availsToNameSet,
emptyAvailEnv, unitAvailEnv, availEnvElts, plusAvailEnv,
warnUnusedImports, warnUnusedLocalBinds, warnUnusedModules,
- lookupImplicitOccsRn, pprAvail, unknownNameErr,
+ lookupImplicitOccsRn, unknownNameErr,
FreeVars, plusFVs, plusFV, unitFV, emptyFVs, isEmptyFVs, addOneFV
)
import Module ( Module, ModuleName, WhereFrom(..),
import Name ( Name, isLocallyDefined, NamedThing(..), getSrcLoc,
nameOccName, nameUnique, nameModule, maybeUserImportedFrom,
isUserImportedExplicitlyName, isUserImportedName,
- maybeWiredInTyConName, maybeWiredInIdName, isWiredInName,
+ maybeWiredInTyConName, maybeWiredInIdName,
isUserExportedName, toRdrName
)
import OccName ( occNameFlavour, isValOcc )
import NameSet
import RdrName ( RdrName, rdrNameOcc )
import BasicTypes ( RecFlag(..), TopLevelFlag(..) )
-import Util ( thenCmp, removeDups )
import List ( partition )
-import ListSetOps ( minusList )
import Bag ( bagToList )
-import FiniteMap ( lookupFM, listToFM )
-import Maybe ( isJust )
import Outputable
\end{code}
import TysWiredIn ( listTyCon )
import Type ( funTyCon )
import Module ( ModuleName, mkThisModule, moduleName, mkVanillaModule, pprModuleName )
-import TyCon ( TyCon )
import FiniteMap
-import Unique ( Unique, Uniquable(..) )
import UniqSupply
import SrcLoc ( SrcLoc, noSrcLoc )
import Outputable
)
import HsImpExp ( ieNames )
import CoreSyn ( CoreRule )
-import BasicTypes ( Version, NewOrData(..), defaultFixity )
-import RdrHsSyn ( RdrNameHsDecl, RdrNameInstDecl, RdrNameTyClDecl, RdrNameRuleDecl,
- RdrNameFixitySig, RdrNameDeprecation, RdrNameIE,
+import BasicTypes ( Version, NewOrData(..) )
+import RdrHsSyn ( RdrNameHsDecl, RdrNameInstDecl, RdrNameRuleDecl,
+ RdrNameDeprecation, RdrNameIE,
extractHsTyRdrNames
)
-import RnEnv ( mkImportedGlobalName, newTopBinder, mkImportedGlobalFromRdrName,
- lookupOccRn, lookupImplicitOccRn,
- pprAvail, rdrAvailInfo,
- availName, availNames, addAvailToNameSet, addSysAvails,
- FreeVars, emptyFVs
- )
+import RnEnv
import RnMonad
-import RnHsSyn ( RenamedHsDecl, RenamedDeprecation )
import ParseIface ( parseIface, IfaceStuff(..) )
import Name ( Name {-instance NamedThing-}, nameOccName,
)
import RdrName ( RdrName, rdrNameOcc )
import NameSet
-import Var ( Id )
import SrcLoc ( mkSrcLoc, SrcLoc )
-import PrelInfo ( pREL_GHC, cCallishTyKeys )
+import PrelInfo ( cCallishTyKeys )
import Maybes ( MaybeErr(..), maybeToBool, orElse )
-import ListSetOps ( unionLists )
-import Unique ( Unique, Uniquable(..) )
-import StringBuffer ( StringBuffer, hGetStringBuffer )
+import Unique ( Uniquable(..) )
+import StringBuffer ( hGetStringBuffer )
import FastString ( mkFastString )
import ErrUtils ( Message )
-import Util ( sortLt, lengthExceeds )
+import Util ( sortLt )
import Lex
import FiniteMap
import Outputable
import Bag
-import IO ( isDoesNotExistError )
import List ( nub )
\end{code}
import NameSet
import CmdLineOpts ( opt_D_dump_rn_trace, opt_HiMap )
import PrelInfo ( builtinNames )
-import TysWiredIn ( boolTyCon )
import SrcLoc ( SrcLoc, mkGeneratedSrcLoc )
import Unique ( Unique, getUnique, unboundKey )
import FiniteMap ( FiniteMap, emptyFM, bagToFM, lookupFM, addToFM, addListToFM,
addListToFM_C, addToFM_C, eltsFM, fmToList
)
import Bag ( Bag, mapBag, emptyBag, isEmptyBag, snocBag )
-import Maybes ( mapMaybe )
-import UniqSet
import UniqSupply
-import Util
import Outputable
infixr 9 `thenRn`, `thenRn_`
import Outputable
import Maybes ( maybeToBool, catMaybes, mapMaybe )
import UniqFM ( emptyUFM, listToUFM, plusUFM_C )
-import Unique ( getUnique )
import Util ( removeDups, equivClassesByUniq, sortLt )
import List ( partition )
\end{code}
)
import NameSet
import OccName ( mkDefaultMethodOcc )
-import BasicTypes ( TopLevelFlag(..) )
import FiniteMap ( elemFM )
import PrelInfo ( derivableClassKeys, cCallishClassKeys,
deRefStablePtr_RDR, makeStablePtr_RDR,
import SrcLoc ( SrcLoc )
import CmdLineOpts ( opt_GlasgowExts, opt_WarnUnusedMatches ) -- Warn of unused for-all'd tyvars
import Unique ( Uniquable(..) )
-import UniqFM ( lookupUFM )
import ErrUtils ( Message )
import CStrings ( isCLabelString )
import Maybes ( maybeToBool, catMaybes )
import Id ( Id, idType )
import VarEnv
import CoreLint ( beginPass, endPass )
-import PprCore
import SetLevels ( setLevels,
Level(..), tOP_LEVEL, ltMajLvl, ltLvl, isTopLvl
)
-import BasicTypes ( Unused )
import Type ( isUnLiftedType )
import Var ( TyVar )
import UniqSupply ( UniqSupply )
import Var ( Id )
import VarEnv
import Maybes
-import Outputable
-import Util
\end{code}
This module walks over @Core@, and looks for @case@ on free variables.
#include "HsVersions.h"
import BinderInfo
-import CmdLineOpts ( SimplifierSwitch(..) )
import CoreSyn
import CoreFVs ( idRuleVars )
import CoreUtils ( exprIsTrivial )
-import Literal ( Literal(..) )
import Id ( isSpecPragmaId, isDataConId, isOneShotLambda, setOneShotLambda,
idOccInfo, setIdOccInfo,
isExportedId, modifyIdInfo, idInfo,
idSpecialisation, idWorkerInfo, setIdInfo
)
import IdInfo ( workerExists, vanillaIdInfo, demandInfo, setDemandInfo )
-import Var ( Var, TyVar, setVarUnique )
+import Var ( Var, setVarUnique )
import VarSet
import VarEnv
import Name ( getOccName )
#include "HsVersions.h"
import CmdLineOpts ( CoreToDo(..), SimplifierSwitch(..),
- SwitchResult(..), switchIsOn, intSwitchSet,
+ SwitchResult(..), intSwitchSet,
opt_D_dump_occur_anal, opt_D_dump_rules,
opt_D_dump_simpl_iterations,
opt_D_dump_simpl_stats,
- opt_D_dump_simpl, opt_D_dump_rules,
+ opt_D_dump_rules,
opt_D_verbose_core2core,
opt_D_dump_occur_anal,
opt_UsageSPOn,
import CoreSyn
import CSE ( cseProgram )
import Rules ( RuleBase, ProtoCoreRule(..), pprProtoCoreRule, prepareLocalRuleBase,
- prepareOrphanRuleBase, unionRuleBase, localRule, orphanRule )
+ prepareOrphanRuleBase, unionRuleBase, localRule )
import CoreUnfold
import PprCore ( pprCoreBindings )
import OccurAnal ( occurAnalyseBinds )
import CoreUtils ( exprIsTrivial, etaReduceExpr, coreBindsSize )
import Simplify ( simplTopBinds, simplExpr )
-import SimplUtils ( findDefault, simplBinders )
+import SimplUtils ( simplBinders )
import SimplMonad
-import Literal ( Literal(..), literalType, mkMachInt )
import ErrUtils ( dumpIfSet )
import FloatIn ( floatInwards )
import FloatOut ( floatOutwards )
-import Id ( Id, mkSysLocal, mkVanillaId, isBottomingId, isDataConWrapId,
- idType, setIdType, idName, idInfo, setIdNoDiscard
- )
-import VarEnv
+import Id ( isDataConWrapId )
import VarSet
-import Module ( Module )
-import Name ( mkLocalName, tidyOccName, tidyTopName,
- NamedThing(..), OccName
- )
-import TyCon ( TyCon, isDataTyCon )
-import Type ( Type,
- isUnLiftedType,
- tidyType, tidyTypes, tidyTopType, tidyTyVar, tidyTyVars,
- Type
- )
-import TysWiredIn ( smallIntegerDataCon, isIntegerTy )
import LiberateCase ( liberateCase )
import SAT ( doStaticArgs )
import Specialise ( specProgram)
import WorkWrap ( wwTopBinds )
import CprAnalyse ( cprAnalyse )
-import Unique ( Unique, Uniquable(..) )
-import UniqSupply ( UniqSupply, mkSplitUniqSupply, splitUniqSupply, uniqFromSupply )
-import Util ( mapAccumL )
-import SrcLoc ( noSrcLoc )
-import Bag
-import Maybes
+import UniqSupply ( UniqSupply, mkSplitUniqSupply, splitUniqSupply )
import IO ( hPutStr, stderr )
import Outputable
-import Ratio ( numerator, denominator )
import List ( partition )
\end{code}
#include "HsVersions.h"
import Id ( Id, mkSysLocal, idUnfolding, isDataConWrapId )
-import IdInfo ( InlinePragInfo(..) )
-import Demand ( Demand )
import CoreSyn
-import CoreUnfold ( isCompulsoryUnfolding, isEvaldUnfolding )
+import CoreUnfold ( isCompulsoryUnfolding )
import PprCore () -- Instances
-import Rules ( RuleBase )
import CostCentre ( CostCentreStack, subsumedCCS )
import Name ( isLocallyDefined )
import OccName ( UserFS )
-import Var ( TyVar )
import VarEnv
import VarSet
import qualified Subst
-import Subst ( Subst, emptySubst, mkSubst,
- substTy, substEnv,
+import Subst ( Subst, mkSubst, substEnv,
InScopeSet, substInScope, isInScope
)
-import Type ( Type, TyVarSubst, applyTy )
+import Type ( Type )
import UniqSupply ( uniqsFromSupply, uniqFromSupply, splitUniqSupply,
UniqSupply
)
#include "HsVersions.h"
-import BinderInfo
import CmdLineOpts ( opt_SimplDoLambdaEtaExpansion, opt_SimplCaseMerge )
import CoreSyn
-import PprCore ( {- instance Outputable Expr -} )
import CoreUnfold ( isValueUnfolding )
-import CoreFVs ( exprFreeVars )
import CoreUtils ( exprIsTrivial, cheapEqExpr, exprType, exprIsCheap, exprEtaExpandArity, bindNonRec )
import Subst ( InScopeSet, mkSubst, substBndrs, substBndr, substIds, lookupIdSubst )
import Id ( Id, idType, isId, idName,
splitTyConApp_maybe, mkTyVarTys, applyTys, splitFunTys, mkFunTys
)
import TyCon ( tyConDataConsIfAvailable )
-import PprType ( {- instance Outputable Type -} )
import DataCon ( dataConRepArity )
-import TysPrim ( statePrimTyCon )
-import Var ( setVarUnique )
import VarSet
import VarEnv ( SubstEnv, SubstResult(..) )
-import UniqSupply ( splitUniqSupply, uniqFromSupply )
-import Util ( zipWithEqual, mapAccumL )
import Outputable
\end{code}
#include "HsVersions.h"
-import CmdLineOpts ( intSwitchSet, switchIsOn,
- opt_SccProfilingOn, opt_PprStyle_Debug, opt_SimplDoEtaReduction,
- opt_SimplNoPreInlining, opt_DictsStrict, opt_SimplPedanticBottoms,
+import CmdLineOpts ( switchIsOn, opt_SimplDoEtaReduction,
+ opt_SimplNoPreInlining, opt_DictsStrict,
SimplifierSwitch(..)
)
import SimplMonad
SimplCont(..), DupFlag(..), contResultType, analyseCont,
discardInline, countArgs, countValArgs, discardCont, contIsDupable
)
-import Var ( TyVar, mkSysTyVar, tyVarKind, maybeModifyIdInfo )
+import Var ( mkSysTyVar, tyVarKind )
import VarEnv
-import VarSet
-import Id ( Id, idType, idInfo, idUnique, isDataConId, isDataConId_maybe,
+import Id ( Id, idType, idInfo, isDataConId,
idUnfolding, setIdUnfolding, isExportedId, isDeadBinder,
- idSpecialisation, setIdSpecialisation,
- idDemandInfo,
- setIdInfo,
+ idDemandInfo, setIdInfo,
idOccInfo, setIdOccInfo,
- zapLamIdInfo, zapFragileIdInfo,
- idStrictness, isBottomingId,
- setInlinePragma,
- setOneShotLambda, maybeModifyIdInfo
+ zapLamIdInfo, idStrictness, setOneShotLambda,
)
-import IdInfo ( InlinePragInfo(..), OccInfo(..), StrictnessInfo(..),
- ArityInfo(..), atLeastArity, arityLowerBound, unknownArity,
- specInfo, inlinePragInfo, setArityInfo, setInlinePragInfo, setUnfoldingInfo,
- CprInfo(..), cprInfo, occInfo
+import IdInfo ( OccInfo(..), StrictnessInfo(..), ArityInfo(..),
+ setArityInfo, setUnfoldingInfo,
+ occInfo
)
import Demand ( Demand, isStrict, wwLazy )
-import DataCon ( DataCon, dataConNumInstArgs, dataConRepStrictness, dataConRepArity,
+import DataCon ( dataConNumInstArgs, dataConRepStrictness,
dataConSig, dataConArgTys
)
import CoreSyn
-import CoreFVs ( exprFreeVars, mustHaveLocalBinding )
-import CoreUnfold ( Unfolding, mkOtherCon, mkUnfolding, otherCons, maybeUnfoldingTemplate,
- callSiteInline, hasSomeUnfolding, noUnfolding
+import CoreFVs ( mustHaveLocalBinding )
+import CoreUnfold ( mkOtherCon, mkUnfolding, otherCons,
+ callSiteInline
)
-import CoreUtils ( cheapEqExpr, exprIsDupable, exprIsCheap, exprIsTrivial, exprIsConApp_maybe,
+import CoreUtils ( cheapEqExpr, exprIsDupable, exprIsTrivial, exprIsConApp_maybe,
exprType, coreAltsType, exprArity, exprIsValue, idAppIsCheap,
exprOkForSpeculation, etaReduceExpr,
mkCoerce, mkSCC, mkInlineMe, mkAltExpr
)
import Rules ( lookupRule )
-import CostCentre ( isSubsumedCCS, currentCCS, isEmptyCC )
-import Type ( Type, mkTyVarTy, mkTyVarTys, isUnLiftedType, seqType,
- mkFunTy, splitFunTy, splitFunTys, splitFunTy_maybe,
- splitTyConApp_maybe,
- funResultTy, isDictTy, isDataType, applyTy, applyTys, mkFunTys
+import CostCentre ( currentCCS )
+import Type ( mkTyVarTys, isUnLiftedType, seqType,
+ mkFunTy, splitFunTy, splitTyConApp_maybe,
+ funResultTy, isDictTy, isDataType, applyTy
)
-import Subst ( Subst, mkSubst, emptySubst, substTy, substExpr,
- substEnv, isInScope, lookupIdSubst, substIdInfo
+import Subst ( mkSubst, substTy, substExpr,
+ isInScope, lookupIdSubst, substIdInfo
)
import TyCon ( isDataTyCon, tyConDataConsIfAvailable,
- tyConClass_maybe, tyConArity, isDataTyCon
+ isDataTyCon
)
import TysPrim ( realWorldStatePrimTy )
import PrelInfo ( realWorldPrimId )
-import BasicTypes ( TopLevelFlag(..), isTopLevel, isLoopBreaker )
+import BasicTypes ( isLoopBreaker )
import Maybes ( maybeToBool )
import Util ( zipWithEqual, lengthExceeds )
-import PprCore
import Outputable
-import Unique ( foldrIdKey ) -- Temp
\end{code}
)
import Id ( Id )
import Module ( Module, moduleString )
-import VarEnv
import ErrUtils ( doIfSet, dumpIfSet )
import UniqSupply ( splitUniqSupply, UniqSupply )
import IO ( hPutStr, stdout )
import CoreSyn -- All of it
import OccurAnal ( occurAnalyseRule )
-import BinderInfo ( markMany )
import CoreFVs ( exprFreeVars, idRuleVars, ruleRhsFreeVars, ruleSomeLhsFreeVars )
import CoreUnfold ( isCheapUnfolding, unfoldingTemplate )
import CoreUtils ( eqExpr )
import PprCore ( pprCoreRule )
-import Subst ( Subst, InScopeSet, substBndr, lookupSubst, extendSubst,
- mkSubst, substEnv, setSubstEnv, emptySubst, isInScope,
- unBindSubst, bindSubstList, unBindSubstList, substInScope
+import Subst ( Subst, InScopeSet, lookupSubst, extendSubst,
+ substEnv, setSubstEnv, emptySubst, isInScope,
+ bindSubstList, unBindSubstList, substInScope
)
import Id ( Id, idUnfolding, zapLamIdInfo,
idSpecialisation, setIdSpecialisation,
- setIdNoDiscard, maybeModifyIdInfo, modifyIdInfo
+ setIdNoDiscard
)
-import Name ( Name, isLocallyDefined )
+import Name ( isLocallyDefined )
import Var ( isTyVar, isId )
import VarSet
import VarEnv
-import Type ( mkTyVarTy, getTyVar_maybe )
+import Type ( mkTyVarTy )
import qualified Unify ( match )
-import CmdLineOpts ( opt_D_dump_simpl, opt_D_verbose_core2core )
import UniqFM
-import ErrUtils ( dumpIfSet )
import Outputable
import Maybes ( maybeToBool )
-import List ( partition )
import Util ( sortLt )
\end{code}
tyVarsOfType, tyVarsOfTypes, tyVarsOfTheta, applyTys,
mkForAllTys, boxedTypeKind
)
-import PprType ( {- instance Outputable Type -} )
import Subst ( Subst, mkSubst, substTy, mkSubst, substBndrs, extendSubstList,
substId, substAndCloneId, substAndCloneIds, lookupIdSubst, substInScope
)
import CoreSyn -- input
import StgSyn -- output
-import PprCore ( {- instance Outputable Bind/Expr -} )
import CoreUtils ( exprType )
import SimplUtils ( findDefault )
import CostCentre ( noCCS )
-import Id ( Id, mkSysLocal, idType, idStrictness, idUnique, isExportedId, mkVanillaId,
- externallyVisibleId, setIdUnique, idName,
- idDemandInfo, idArity, setIdType, idFlavour
+import Id ( Id, mkSysLocal, idType, idStrictness, isExportedId,
+ mkVanillaId, idName, idDemandInfo, idArity, setIdType,
+ idFlavour, idUnique
)
-import Var ( Var, varType, modifyIdInfo )
-import IdInfo ( setDemandInfo, StrictnessInfo(..), IdFlavour(..) )
-import UsageSPUtils ( primOpUsgTys )
-import DataCon ( DataCon, dataConName, dataConWrapId )
-import Demand ( Demand, isStrict, wwStrict, wwLazy )
-import Name ( Name, nameModule, isLocallyDefinedName, setNameUnique )
-import Literal ( Literal(..) )
+import IdInfo ( StrictnessInfo(..), IdFlavour(..) )
+import DataCon ( dataConWrapId )
+import Demand ( Demand, isStrict, wwLazy )
+import Name ( setNameUnique )
import VarEnv
-import PrimOp ( PrimOp(..), setCCallUnique, primOpUsg )
+import PrimOp ( PrimOp(..), setCCallUnique )
import Type ( isUnLiftedType, isUnboxedTupleType, Type, splitFunTy_maybe,
- UsageAnn(..), tyUsg, applyTy, mkUsgTy, repType, seqType,
+ UsageAnn(..), tyUsg, applyTy, repType, seqType,
splitRepFunTys, mkFunTys
)
-import TysPrim ( intPrimTy )
import UniqSupply -- all of it, really
-import Util ( lengthExceeds )
-import BasicTypes ( TopLevelFlag(..), isNotTopLevel, Arity )
-import CmdLineOpts ( opt_D_verbose_stg2stg, opt_UsageSPOn )
+import BasicTypes ( TopLevelFlag(..), isNotTopLevel )
+import CmdLineOpts ( opt_D_verbose_stg2stg )
import UniqSet ( emptyUniqSet )
import Maybes
import Outputable
import Type ( mkFunTys, splitFunTys, splitAlgTyConApp_maybe,
isUnLiftedType, isTyVarTy, splitForAllTys, Type
)
-import PprType ( {- instance Outputable Type -} )
import TyCon ( TyCon, isDataTyCon )
import Util ( zipEqual )
import Outputable
import Id ( Id, idName, idPrimRep, idType )
import Name ( isDllName )
import Literal ( Literal, literalType, isLitLitLit, literalPrimRep )
-import DataCon ( DataCon, dataConName, isNullaryDataCon )
+import DataCon ( DataCon, dataConName )
import PrimOp ( PrimOp )
-import PrimRep ( PrimRep(..) )
import Outputable
import Type ( Type )
-import PprType ( {- instance Outputable Type -} )
import UniqSet ( isEmptyUniqSet, uniqSetToList, UniqSet )
\end{code}
#include "HsVersions.h"
-import Id ( Id )
import Type ( Type )
-import CoreSyn ( CoreExpr )
import VarEnv
import IdInfo ( StrictnessInfo(..) )
import Demand ( Demand, pprDemands )
import CmdLineOpts ( opt_D_dump_stranal, opt_D_dump_simpl_stats, opt_D_verbose_core2core )
import CoreSyn
-import Id ( idType, setIdStrictness, setInlinePragma,
+import Id ( setIdStrictness, setInlinePragma,
idDemandInfo, setIdDemandInfo, isBottomingId,
Id
)
import SaAbsInt
import SaLib
import Demand ( Demand, wwStrict, isStrict, isLazy )
-import UniqSupply ( UniqSupply )
import Util ( zipWith3Equal, stretchZipWith )
import Outputable
\end{code}
)
import CoreLint ( beginPass, endPass )
import CoreUtils ( exprType, exprArity, exprEtaExpandArity )
-import DataCon ( DataCon )
import MkId ( mkWorkerId )
import Id ( Id, idType, idStrictness, setIdArityInfo, isOneShotLambda,
setIdStrictness, idInlinePragma,
setIdWorkerInfo, idCprInfo, setInlinePragma )
-import VarSet
import Type ( Type, isNewType, splitForAllTys, splitFunTys )
import IdInfo ( mkStrictnessInfo, noStrictnessInfo, StrictnessInfo(..),
CprInfo(..), exactArity, InlinePragInfo(..), isNeverInlinePrag,
WorkerInfo(..)
)
import Demand ( Demand, wwLazy )
-import SaLib
import UniqSupply ( UniqSupply, initUs_, returnUs, thenUs, mapUs, getUniqueUs, UniqSM )
-import UniqSet
import WwLib
import Outputable
\end{code}
mkTyConApp, mkFunTys,
Type
)
-import TyCon ( isNewTyCon, isProductTyCon, TyCon )
import BasicTypes ( NewOrData(..), Arity, Boxity(..) )
import Var ( TyVar, Var, isId )
import UniqSupply ( returnUs, thenUs, getUniqueUs, getUniquesUs,
#include "HsVersions.h"
import HsSyn ( HsLit(..), HsExpr(..) )
-import RnHsSyn ( RenamedArithSeqInfo, RenamedHsExpr, RenamedPat )
import TcHsSyn ( TcExpr, TcId,
mkHsTyApp, mkHsDictApp, mkHsConApp, zonkId
)
import Name ( OccName, Name, mkDictOcc, mkMethodOcc, mkIPOcc,
getOccName, nameUnique )
import PprType ( pprPred )
-import SrcLoc ( SrcLoc )
import Type ( Type, PredType(..), ThetaType,
mkTyVarTy, isTyVarTy, mkDictTy, mkPredTy,
splitForAllTys, splitSigmaTy,
import Subst ( emptyInScopeSet, mkSubst,
substTy, substClasses, mkTyVarSubst, mkTopTyVarSubst
)
-import TyCon ( TyCon )
import Literal ( inIntRange )
-import Var ( TyVar )
import VarEnv ( lookupVarEnv, TidyEnv,
lookupSubstEnv, SubstResult(..)
)
import Unique ( fromRationalClassOpKey, rationalTyConKey,
fromIntClassOpKey, fromIntegerClassOpKey, Unique
)
-import Maybes ( expectJust )
import Maybe ( catMaybes )
import Util ( thenCmp, zipWithEqual, mapAccumL )
import Outputable
import BasicTypes ( TopLevelFlag(..), RecFlag(..), isNotTopLevel )
import FiniteMap ( listToFM, lookupFM )
import Unique ( ioTyConKey, mainKey, hasKey, Uniquable(..) )
-import SrcLoc ( SrcLoc )
import Outputable
\end{code}
andMonoBinds, andMonoBindList, getTyVarName,
isClassDecl, isClassOpSig, isPragSig, collectMonoBinders
)
-import HsPragmas ( ClassPragmas(..) )
import BasicTypes ( NewOrData(..), TopLevelFlag(..), RecFlag(..) )
import RnHsSyn ( RenamedTyClDecl, RenamedClassPragmas,
RenamedClassOpSig, RenamedMonoBinds,
)
import TcBinds ( tcBindWithSigs, tcSpecSigs )
import TcTyDecls ( mkNewTyConRep )
-import TcUnify ( unifyKinds )
import TcMonad
import TcMonoType ( kcHsType, tcHsTopType, tcExtendTopTyVarScope,
tcContext, checkSigTyVars, sigCtxt, mkTcSig
import TcType ( TcType, TcTyVar, tcInstTyVars, zonkTcTyVarBndr, tcGetTyVar )
import TcInstUtil ( classDataCon )
import PrelInfo ( nO_METHOD_BINDING_ERROR_ID )
-import FieldLabel ( firstFieldLabelTag )
import Bag ( unionManyBags, bagToList )
import Class ( mkClass, classBigSig, classSelIds, Class, ClassOpItem )
import CmdLineOpts ( opt_GlasgowExts, opt_WarnMissingMethods )
import MkId ( mkDictSelId, mkDataConId, mkDataConWrapId, mkDefaultMethodId )
import DataCon ( mkDataCon, dataConId, dataConWrapId, notMarkedStrict )
import Id ( Id, setInlinePragma, idUnfolding, idType, idName )
-import CoreUnfold ( unfoldingTemplate )
-import IdInfo
import Name ( Name, nameOccName, isLocallyDefined, NamedThing(..) )
import NameSet ( emptyNameSet )
import Outputable
import Var ( tyVarKind, TyVar )
import VarSet ( mkVarSet, emptyVarSet )
import TyCon ( AlgTyConFlavour(..), mkClassTyCon )
-import Unique ( Unique, Uniquable(..) )
-import Util
import Maybes ( seqMaybe )
import FiniteMap ( lookupWithDefaultFM )
\end{code}
import TysWiredIn ( integerTy, doubleTy )
import Type ( Type )
import Unique ( numClassKey )
-import ErrUtils ( addShortErrLocLine )
import Outputable
-import Util
\end{code}
\begin{code}
mkSigmaTy, mkDictTy, isUnboxedType,
splitAlgTyConApp, classesToPreds
)
-import PprType ( {- instance Outputable Type -} )
import TysWiredIn ( voidTy )
import Var ( TyVar )
import Unique -- Keys stuff
#include "HsVersions.h"
-import HsTypes ( HsTyVarBndr, getTyVarName )
import Id ( mkUserLocal, isDataConWrapId_maybe )
import MkId ( mkSpecPragmaId )
import Var ( TyVar, Id, setVarName,
tcInstTyVars, zonkTcTyVars,
TcKind, kindToTcKind
)
-import VarEnv
import VarSet
import Type ( Kind, Type, superKind,
tyVarsOfType, tyVarsOfTypes, mkTyVarTy,
)
import Unify ( unifyTyListsX, matchTys )
import Unique ( pprUnique10, Unique, Uniquable(..) )
-import FiniteMap ( lookupFM, addToFM )
import UniqFM
import Unique ( Uniquable(..) )
import Util ( zipEqual, zipWith3Equal, mapAccumL )
-import Bag ( bagToList )
import SrcLoc ( SrcLoc )
import FastString ( FastString )
import Maybes
tcInstTcType, tcSplitRhoTy,
newTyVarTy, newTyVarTy_OpenKind, zonkTcType )
-import Class ( Class )
import FieldLabel ( FieldLabel, fieldLabelName, fieldLabelType, fieldLabelTyCon )
import Id ( idType, recordSelectorFieldLabel, isRecordSelector,
Id, mkVanillaId
TcForeignExportDecl )
import TcExpr ( tcId, tcPolyExpr )
import Inst ( emptyLIE, LIE, plusLIE )
-import CoreSyn
import ErrUtils ( Message )
import Id ( Id, idName, mkVanillaId )
, splitTyConApp_maybe
, splitForAllTys
)
-import PprType ( {- instance Outputable Type -} )
import TysWiredIn ( isFFIArgumentTy, isFFIResultTy,
isFFIExternalTy, isAddrTy
)
import Type ( Type )
import Unique
import Outputable
-import Util
-import CmdLineOpts ( opt_GlasgowExts )
-import Maybes ( maybeToBool )
\end{code}
isDataSymOcc, isSymOcc
)
-import PrimOp ( PrimOp(..) )
import PrelInfo -- Lots of RdrNames
import SrcLoc ( mkGeneratedSrcLoc, SrcLoc )
import TyCon ( TyCon, isNewTyCon, tyConDataCons, isEnumerationTyCon,
import Maybes ( maybeToBool )
import Constants
import List ( partition, intersperse )
-import Char ( isAlpha )
#if __GLASGOW_HASKELL__ >= 404
import GlaExts ( fromInt )
import TcType ( TcType, TcTyVar,
zonkTcTypeToType, zonkTcTyVarToTyVar, zonkTcTyVarBndr, zonkTcType
)
-import Type ( mkTyVarTy, isUnLiftedType, Type )
import Name ( isLocallyDefined )
-import Var ( TyVar )
-import VarEnv ( TyVarEnv, emptyVarEnv, extendVarEnvList )
-import VarSet ( isEmptyVarSet )
import CoreSyn ( Expr )
import CoreUnfold( unfoldingTemplate )
import BasicTypes ( RecFlag(..) )
import Bag
-import UniqFM
import Outputable
\end{code}
tcLookupValueMaybe,
explicitLookupValue, badCon, badPrimOp, valueEnvIds
)
-import TcType ( TcKind, kindToTcKind )
import RnHsSyn ( RenamedHsDecl )
import HsCore
import CoreUnfold
import CoreLint ( lintUnfolding )
import WorkWrap ( mkWrapper )
-import PrimOp ( PrimOp(..) )
import Id ( Id, mkId, mkVanillaId,
isDataConWrapId_maybe
import DataCon ( dataConSig, dataConArgTys )
import Type ( mkSynTy, mkTyVarTys, splitAlgTyConApp, splitAlgTyConApp_maybe, splitFunTys, unUsgTy )
import Var ( mkTyVar, tyVarKind )
-import VarEnv
import Name ( Name, NamedThing(..), isLocallyDefined )
-import TysWiredIn ( integerTy, stringTy )
import Demand ( wwLazy )
import ErrUtils ( pprBagOfErrors )
-import Maybes ( maybeToBool, MaybeErr(..) )
import Outputable
import Util ( zipWithEqual )
\end{code}
import CmdLineOpts ( opt_GlasgowExts, opt_AllowUndecidableInstances )
import Class ( classBigSig, Class )
import Var ( idName, idType, Id, TyVar )
-import DataCon ( isNullaryDataCon, splitProductType_maybe )
import Maybes ( maybeToBool, catMaybes, expectJust )
import MkId ( mkDictFunId )
import Module ( ModuleName )
import NameSet ( emptyNameSet )
import PrelInfo ( eRROR_ID )
import PprType ( pprConstraint )
-import SrcLoc ( SrcLoc )
import TyCon ( isSynTyCon, tyConDerivings )
import Type ( Type, isUnLiftedType, mkTyVarTys,
splitSigmaTy, isTyVarTy,
)
import Subst ( mkTopTyVarSubst, substClasses )
import VarSet ( mkVarSet, varSetElems )
-import TysPrim ( byteArrayPrimTyCon, mutableByteArrayPrimTyCon )
import TysWiredIn ( stringTy, isFFIArgumentTy, isFFIResultTy )
import Unique ( Unique, cCallableClassKey, cReturnableClassKey, hasKey, Uniquable(..) )
import Outputable
import Maybes ( MaybeErr(..), mkLookupFunDef )
import Name ( getSrcLoc, nameModule, isLocallyDefined )
import SrcLoc ( SrcLoc )
-import Type ( ThetaType, Type, ClassContext )
+import Type ( Type, ClassContext )
import PprType ( pprConstraint )
import Class ( classTyCon )
import DataCon ( DataCon )
import Type ( Kind, tyVarsOfType, isTauTy, mkFunTy, boxedTypeKind )
import VarSet
import Var ( Id )
-import Util
import Bag
import Outputable
import List ( nub )
initEnv,
ValueEnv, TcTyThing(..)
)
-import TcExpr ( tcId )
import TcRules ( tcRules )
import TcForeign ( tcForeignImports, tcForeignExports )
import TcIfaceSig ( tcInterfaceSigs )
)
import TyCon ( TyCon, tyConKind )
import Class ( Class, classSelIds, classTyCon )
-import Type ( mkTyConApp, mkForAllTy,
- boxedTypeKind, getTyVar, Type )
-import TysWiredIn ( unitTy )
import PrelInfo ( mAIN_Name )
-import TcUnify ( unifyTauTy )
import Unique ( Unique, mainKey )
import UniqSupply ( UniqSupply )
import Maybes ( maybeToBool )
import Util
import Bag ( Bag, isEmptyBag )
import Outputable
-
-import IOExts
\end{code}
Outside-world interface:
import RnHsSyn ( RenamedPat, RenamedArithSeqInfo, RenamedHsExpr )
import Type ( Type, Kind, PredType, ThetaType, RhoType, TauType,
)
-import PprType ( {- instance Outputable Type -} )
import ErrUtils ( addShortErrLocLine, addShortWarnLocLine, pprBagOfErrors, ErrMsg, Message, WarnMsg )
import CmdLineOpts ( opt_PprStyle_Debug )
import UniqSupply ( UniqSupply, uniqFromSupply, uniqsFromSupply, splitUniqSupply,
UniqSM, initUs_ )
import SrcLoc ( SrcLoc, noSrcLoc )
-import FiniteMap ( FiniteMap, emptyFM )
import UniqFM ( UniqFM, emptyUFM )
import Unique ( Unique )
import BasicTypes ( Unused )
-import Util
import Outputable
import FastString ( FastString )
import Var ( TyVar, mkTyVar, mkNamedUVar, varName )
import VarEnv
import VarSet
-import Bag ( bagToList )
import ErrUtils ( Message )
-import TyCon ( TyCon )
import Name ( Name, OccName, isLocallyDefined )
import TysWiredIn ( mkListTy, mkTupleTy )
import UniqFM ( elemUFM, foldUFM )
import BasicTypes ( Boxity(..) )
import SrcLoc ( SrcLoc )
-import Unique ( Unique, Uniquable(..) )
import Util ( mapAccumL, isSingleton, removeDups )
import Outputable
\end{code}
#include "HsVersions.h"
-import {-# SOURCE #-} TcExpr( tcExpr )
-
import HsSyn ( InPat(..), OutPat(..), HsLit(..), HsExpr(..), Sig(..) )
import RnHsSyn ( RenamedPat )
import TcHsSyn ( TcPat, TcId )
)
import Id ( Id, idType, isDataConWrapId_maybe )
import Type ( Type, isTauTy, mkTyConApp, mkClassPred, boxedTypeKind )
-import PprType ( {- instance Outputable Type -} )
import Subst ( substTy, substClasses )
import TysPrim ( charPrimTy, intPrimTy, floatPrimTy,
doublePrimTy, addrPrimTy
)
import TysWiredIn ( charTy, stringTy, intTy )
-import SrcLoc ( SrcLoc )
import Unique ( eqClassOpKey, geClassOpKey, minusClassOpKey,
cCallableClassKey
)
import TysWiredIn ( unitTy )
import VarSet
import FiniteMap
-import BasicTypes ( TopLevelFlag(..) )
import CmdLineOpts ( opt_GlasgowExts )
import Outputable
import Util
import Type ( mkArrowKind, boxedTypeKind )
-import Class ( Class )
-import Var ( TyVar, tyVarKind )
import FiniteMap
import Bag
-import VarSet
import Digraph ( stronglyConnComp, SCC(..) )
import Name ( Name, NamedThing(..), getSrcLoc, isTvOcc, nameOccName )
import Outputable
unitUniqSet, unionUniqSets,
unionManyUniqSets, uniqSetToList )
import ErrUtils ( Message )
-import SrcLoc ( SrcLoc )
import TyCon ( TyCon, ArgVrcs )
import Variance ( calcTyConArgVrcs )
import Unique ( Unique, Uniquable(..) )
import Unique ( unpackCStringIdKey )
import Util ( equivClasses )
import FiniteMap ( FiniteMap, lookupWithDefaultFM )
-import CmdLineOpts ( opt_GlasgowExts )
\end{code}
%************************************************************************
-- friends:
-import PprType ( pprType )
import TypeRep ( Type(..), Kind, TyNote(..),
typeCon, openTypeKind, boxedTypeKind, boxedKind, superKind, superBoxity
) -- friend
import Subst ( Subst, mkTopTyVarSubst, substTy )
import TyCon ( tyConKind, mkPrimTyCon )
import PrimRep ( PrimRep(VoidRep) )
-import VarEnv
-import VarSet ( emptyVarSet )
import Var ( TyVar, tyVarKind, tyVarName, isTyVar, isMutTyVar, mkTyVar )
-- others:
import TyCon ( TyCon, isTupleTyCon, tupleTyConBoxity, tyConArity )
import Name ( hasBetterProv )
import Var ( TyVar, tyVarKind, varName, isSigTyVar )
-import VarEnv
import VarSet ( varSetElems )
import TcType ( TcType, TcTauType, TcTyVar, TcKind,
newTyVarTy, newOpenTypeKind, newTyVarTy_OpenKind,
tcGetTyVar, tcPutTyVar, zonkTcType, tcTypeKind
)
+
-- others:
import BasicTypes ( Arity, Boxity, isBoxed )
import TysWiredIn ( listTyCon, mkListTy, mkTupleTy )
-import PprType () -- Instances
-import Util
import Outputable
\end{code}
import Var ( TyVar, tyVarKind,
tyVarName, setTyVarName
)
-import VarEnv
import TyCon ( TyCon, isPrimTyCon, isTupleTyCon, isUnboxedTupleTyCon,
maybeTyConSingleCon, isEnumerationTyCon,
tyConArity, tyConUnique
import PprEnv
import Unique ( Uniquable(..) )
import Unique -- quite a few *Keys
-import Util
\end{code}
%************************************************************************
SubstResult(..)
)
-import Unique ( Uniquable(..) )
import Outputable( panic )
import Util ( snocView )
\end{code}
import VarEnv
import Type ( UsageAnn(..) )
import Var ( UVar )
-import Monad ( foldM )
import Bag ( Bag, unitBag, emptyBag, unionBags, foldlBag, bagToList )
import Outputable
import PprType
mkUsgTy, splitUsgTy, isUsgTy, isNotUsgTy, unUsgTy, tyUsg,
splitUsForAllTys, substUsTy,
mkFunTy, mkForAllTy )
-import PprType ( {- instance Outputable Type -} )
import TyCon ( tyConArgVrcs_maybe, isFunTyCon )
import Literal ( Literal(..), literalType )
import Var ( Var, UVar, varType, setVarType, mkUVar, modifyIdInfo )
import IdInfo ( setLBVarInfo, LBVarInfo(..) )
import Id ( isExportedId )
-import Name ( isLocallyDefined )
import VarEnv
import VarSet
import UniqSupply ( UniqSupply, UniqSM,
import CoreSyn
import TypeRep ( Type(..), TyNote(..) ) -- friend
import Type ( UsageAnn(..), isUsgTy, tyUsg )
-import PprType ( {- instance Outputable Type -} )
import TyCon ( isAlgTyCon, isPrimTyCon, isSynTyCon, isFunTyCon )
import Var ( Var, varType )
import Id ( idLBVarInfo )
import IdInfo ( LBVarInfo(..) )
-import SrcLoc ( noSrcLoc )
-import ErrUtils ( Message, ghcExit )
+import ErrUtils ( ghcExit )
import Util ( zipWithEqual )
-import PprCore
import Bag
import Outputable
\end{code}
import CoreSyn
import CoreFVs ( mustHaveLocalBinding )
-import Literal ( Literal(..) )
import Var ( Var, varName, varType, setVarType, mkUVar )
import Id ( isExportedId )
import Name ( isLocallyDefined )
import TypeRep ( Type(..), TyNote(..) ) -- friend
import Type ( UsageAnn(..), isUsgTy, splitFunTys )
-import PprType ( {- instance Outputable Type -} )
import Subst ( substTy, mkTyVarSubst )
import TyCon ( isAlgTyCon, isPrimTyCon, isSynTyCon, isFunTyCon )
import VarEnv
import PrimOp ( PrimOp, primOpUsg )
-import Maybes ( expectJust )
import UniqSupply ( UniqSupply, UniqSM, initUs, getUniqueUs, thenUs, returnUs )
import Outputable
-import PprCore ( ) -- instances only
\end{code}
======================================================================