import CmdLineOpts ( opt_D_dump_ds )
import HsSyn ( MonoBinds, RuleDecl(..), RuleBndr(..), HsExpr(..), HsBinds(..), MonoBinds(..) )
-import TcHsSyn ( TypecheckedMonoBinds, TypecheckedForeignDecl, TypecheckedRuleDecl )
+import TcHsSyn ( TypecheckedRuleDecl )
import TcModule ( TcResults(..) )
import CoreSyn
import Rules ( ProtoCoreRule(..), pprProtoCoreRule )
import DsExpr ( dsExpr )
import DsBinds ( dsMonoBinds, AutoScc(..) )
import DsForeign ( dsForeigns )
-import DsUtils
import DsExpr () -- Forces DsExpr to be compiled; DsBinds only
-- depends on DsExpr.hi-boot.
-import Module ( Module, moduleString )
-import Id ( Id )
-import Name ( isLocallyDefined )
+import Module ( Module )
import VarEnv
import VarSet
-import Bag ( isEmptyBag, unionBags )
+import Bag ( isEmptyBag )
import CmdLineOpts ( opt_SccProfilingOn )
import CoreLint ( beginPass, endPass )
import ErrUtils ( doIfSet, pprBagOfWarnings )
import Outputable
-import UniqSupply ( splitUniqSupply, UniqSupply )
+import UniqSupply ( UniqSupply )
\end{code}
%************************************************************************
import DsUtils
import Match ( matchWrapper )
-import BasicTypes ( RecFlag(..) )
import CmdLineOpts ( opt_SccProfilingOn, opt_AutoSccsOnAllToplevs,
opt_AutoSccsOnExportedToplevs, opt_AutoSccsOnDicts
)
import CostCentre ( CostCentre, mkAutoCC, IsCafCC(..) )
import Id ( idType, idName, isUserExportedId, isSpecPragmaId, Id )
import NameSet
-import VarEnv
import VarSet
import Type ( mkTyVarTy, isDictTy )
import Subst ( mkTyVarSubst, substTy )
import CoreSyn
import DsMonad
-import DsUtils
import CoreUtils ( exprType, mkCoerce )
-import Id ( Id, mkWildId )
+import Id ( mkWildId )
import MkId ( mkCCallOpId, realWorldPrimId )
import Maybes ( maybeToBool )
-import PrimOp ( PrimOp(..), CCall(..), CCallTarget(..) )
-import DataCon ( DataCon, splitProductType_maybe, dataConSourceArity, dataConWrapId )
+import PrimOp ( CCall(..), CCallTarget(..) )
+import DataCon ( splitProductType_maybe, dataConSourceArity, dataConWrapId )
import CallConv
import Type ( isUnLiftedType, splitAlgTyConApp_maybe, mkFunTys,
splitTyConApp_maybe, tyVarsOfType, mkForAllTys,
isNewType, repType, isUnLiftedType, mkFunTy, mkTyConApp,
Type
)
-import PprType ( {- instance Outputable Type -} )
-import TysPrim ( byteArrayPrimTy, realWorldStatePrimTy,
+import TysPrim ( realWorldStatePrimTy,
byteArrayPrimTyCon, mutableByteArrayPrimTyCon, intPrimTy
)
-import TysWiredIn ( unitDataConId, stringTy,
+import TysWiredIn ( unitDataConId,
unboxedSingletonDataCon, unboxedPairDataCon,
unboxedSingletonTyCon, unboxedPairTyCon,
- mkTupleTy, tupleCon,
- boolTy, trueDataCon, falseDataCon, trueDataConId, falseDataConId,
- unitTy
+ boolTy, trueDataCon, falseDataCon,
+ trueDataConId, falseDataConId, unitTy
)
import Literal ( mkMachInt )
import CStrings ( CLabelString )
-import Unique ( Unique, Uniquable(..), hasKey, ioTyConKey )
+import Unique ( Unique, hasKey, ioTyConKey )
import VarSet ( varSetElems )
import Outputable
\end{code}
TypecheckedStmt
)
import CoreSyn
-import PprCore ( {- instance Outputable Expr -} )
import CoreUtils ( exprType, mkIfThenElse, bindNonRec )
import DsMonad
import Match ( matchWrapper, matchSimply )
import CostCentre ( mkUserCC )
-import FieldLabel ( FieldLabel )
import Id ( Id, idType, recordSelectorFieldLabel )
-import PrelInfo ( rEC_CON_ERROR_ID, rEC_UPD_ERROR_ID, iRREFUT_PAT_ERROR_ID )
+import PrelInfo ( rEC_CON_ERROR_ID, iRREFUT_PAT_ERROR_ID )
import DataCon ( DataCon, dataConWrapId, dataConTyCon, dataConArgTys, dataConFieldLabels )
-import TyCon ( isNewTyCon )
import DataCon ( isExistentialDataCon )
import Literal ( Literal(..), inIntRange )
-import Type ( splitFunTys, mkTyConApp,
+import Type ( splitFunTys,
splitAlgTyConApp, splitAlgTyConApp_maybe, splitTyConApp_maybe,
isNotUsgTy, unUsgTy,
splitAppTy, isUnLiftedType, Type
)
-import TysWiredIn ( tupleCon,
- listTyCon, mkListTy,
+import TysWiredIn ( tupleCon, listTyCon,
charDataCon, charTy, stringTy,
smallIntegerDataCon, isIntegerTy
)
import BasicTypes ( RecFlag(..), Boxity(..) )
import Maybes ( maybeToBool )
-import Unique ( Uniquable(..), hasKey, ratioTyConKey, addr2IntegerIdKey )
+import Unique ( hasKey, ratioTyConKey, addr2IntegerIdKey )
import Util ( zipEqual, zipWithEqual )
import Outputable
import DsUtils
import PrelInfo ( nON_EXHAUSTIVE_GUARDS_ERROR_ID )
import Unique ( otherwiseIdKey, trueDataConKey, hasKey, Uniquable(..) )
-import Outputable
\end{code}
@dsGuarded@ is used for both @case@ expressions and pattern bindings.
import Type ( Type )
import TysWiredIn ( mkListTy, mkTupleTy, unitTy )
import BasicTypes ( Boxity(..) )
-import Panic ( panic )
\end{code}
Note: If @outPatType@ doesn't bear a strong resemblance to @exprType@,
import {-# SOURCE #-} DsExpr ( dsExpr, dsLet )
-import HsSyn ( Stmt(..), HsExpr )
-import TcHsSyn ( TypecheckedStmt, TypecheckedHsExpr )
+import HsSyn ( Stmt(..) )
+import TcHsSyn ( TypecheckedStmt )
import DsHsSyn ( outPatType )
import CoreSyn
import CmdLineOpts ( opt_FoldrBuildOn )
import CoreUtils ( exprType, mkIfThenElse )
import Id ( idType )
-import Var ( Id, TyVar )
-import Type ( mkTyVarTy, mkForAllTy, mkFunTys, mkFunTy, Type )
-import TysPrim ( alphaTyVar, alphaTy )
-import TysWiredIn ( nilDataCon, consDataCon, listTyCon )
+import Var ( Id )
+import Type ( mkTyVarTy, mkFunTys, mkFunTy, Type )
+import TysPrim ( alphaTyVar )
+import TysWiredIn ( nilDataCon, consDataCon )
import Match ( matchSimply )
import Unique ( foldrIdKey, buildIdKey )
-import Outputable
\end{code}
List comprehensions may be desugared in one of two ways: ``ordinary''
#include "HsVersions.h"
-import Bag ( emptyBag, snocBag, bagToList, Bag )
-import ErrUtils ( WarnMsg, pprBagOfErrors )
-import HsSyn ( OutPat )
+import Bag ( emptyBag, snocBag, Bag )
+import ErrUtils ( WarnMsg )
import Id ( mkSysLocal, setIdUnique, Id )
import Module ( Module )
-import Name ( Name, maybeWiredInIdName )
import Var ( TyVar, setTyVarUnique )
-import VarEnv
import Outputable
import SrcLoc ( noSrcLoc, SrcLoc )
import TcHsSyn ( TypecheckedPat )
#include "HsVersions.h"
-import {-# SOURCE #-} DsExpr ( dsExpr, dsLet )
-
import CmdLineOpts ( opt_WarnIncompletePatterns, opt_WarnOverlappingPatterns,
opt_WarnSimplePatterns
)
import MatchCon ( matchConFamily )
import MatchLit ( matchLiterals )
import PrelInfo ( pAT_ERROR_ID )
-import Type ( isUnLiftedType, splitAlgTyConApp,
- mkTyVarTys, Type
- )
-import TysPrim ( intPrimTy, charPrimTy, floatPrimTy, doublePrimTy,
- addrPrimTy, wordPrimTy
- )
-import TysWiredIn ( nilDataCon, consDataCon, mkTupleTy, mkListTy,
- charTy, charDataCon, intTy, intDataCon,
- floatTy, floatDataCon, doubleTy, tupleCon,
- doubleDataCon, addrTy,
- addrDataCon, wordTy, wordDataCon
- )
+import Type ( splitAlgTyConApp, mkTyVarTys, Type )
+import TysWiredIn ( nilDataCon, consDataCon, mkTupleTy, mkListTy, tupleCon )
import BasicTypes ( Boxity(..) )
import UniqSet
import ErrUtils ( addErrLocHdrLine, dontAddErrLoc )
-%
+
% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
%
\section[MatchCon]{Pattern-matching constructors}
import CoreSyn
import Type ( mkTyVarTys )
import Util ( equivClassesByUniq )
-import Unique ( Uniquable(..), Unique )
-import Outputable
+import Unique ( Uniquable(..) )
\end{code}
We are confronted with the first column of patterns in a set of
import {-# SOURCE #-} DsExpr ( dsExpr )
import HsSyn ( HsLit(..), OutPat(..), HsExpr(..) )
-import TcHsSyn ( TypecheckedHsExpr, TypecheckedPat )
import CoreSyn ( Expr(..), Bind(..) )
import Id ( Id )
import DsUtils
import Literal ( mkMachInt, Literal(..) )
-import PrimRep ( PrimRep(IntRep) )
import Maybes ( catMaybes )
import Type ( Type, isUnLiftedType )
import Panic ( panic, assertPanic )
-- friends:
import HsTypes ( HsType )
-import HsImpExp ( IE(..), ieName )
import CoreSyn ( CoreExpr )
-import PprCore () -- Instances for Outputable
--others:
-import Id ( Id )
import Name ( Name, isUnboundName )
import NameSet ( NameSet, elemNameSet, nameSetToList )
import BasicTypes ( RecFlag(..), Fixity )
import Outputable
-import Bag
import SrcLoc ( SrcLoc )
import Var ( TyVar )
-import Util ( thenCmp )
\end{code}
%************************************************************************
pprInlinePragInfo, ppArityInfo, ppStrictnessInfo
)
import RdrName ( RdrName )
-import Name ( Name, toRdrName )
+import Name ( toRdrName )
import CoreSyn
import CostCentre ( pprCostCentreCore )
import PrimOp ( PrimOp(CCallOp) )
-import Demand ( Demand, StrictnessInfo )
+import Demand ( StrictnessInfo )
import Literal ( Literal, maybeLitLit )
import PrimOp ( CCall, pprCCallOp )
import DataCon ( dataConTyCon )
import TyCon ( isTupleTyCon, tupleTyConBoxity )
-import Type ( Type, Kind )
+import Type ( Kind )
import CostCentre
import SrcLoc ( SrcLoc )
-import BasicTypes ( Arity )
import Outputable
\end{code}
import CoreSyn ( CoreRule(..) )
import BasicTypes ( Fixity, NewOrData(..) )
import CallConv ( CallConv, pprCallConv )
-import Var ( TyVar, Id )
import Name ( toRdrName )
-- others:
-import PprType
import FunDeps ( pprFundeps )
import Class ( FunDep )
import CStrings ( CLabelString, pprCLabelString )
import Outputable
import SrcLoc ( SrcLoc, noSrcLoc )
-import Util
\end{code}