1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface Typecheck where
7 import CmdLineOpts(GlobalSwitch)
9 import ErrUtils(Error(..))
10 import FiniteMap(FiniteMap)
11 import HsBinds(Bind, Binds, Sig)
12 import HsDecls(ClassDecl, DataTypeSig, DefaultDecl, FixityDecl, InstDecl, SpecialisedInstanceSig, TyDecl)
13 import HsExpr(ArithSeqInfo, Expr, Qual)
14 import HsImpExp(IE, ImportedInterface)
16 import HsMatches(Match)
17 import HsPat(InPat, RenamedPat(..), TypecheckedPat)
18 import HsTypes(PolyType)
21 import Maybes(Labda, MaybeErr)
23 import NameTypes(FullName, ShortName)
24 import PreludePS(_PackedString)
25 import Pretty(PprStyle, Pretty(..), PrettyRep)
26 import ProtoName(ProtoName)
27 import SplitUniq(SplitUniqSupply)
29 import TcInstDcls(InstInfo)
32 import UniType(UniType)
37 type CE = UniqFM Class
40 type Error = PprStyle -> Int -> Bool -> PrettyRep
45 type RenamedPat = InPat Name
53 type Pretty = Int -> Bool -> PrettyRep
59 typecheckModule :: (GlobalSwitch -> Bool) -> SplitUniqSupply -> (ProtoName -> Labda Name, ProtoName -> Labda Name) -> Module Name (InPat Name) -> MaybeErr ((Binds Id TypecheckedPat, Binds Id TypecheckedPat, Binds Id TypecheckedPat, [(Inst, Expr Id TypecheckedPat)]), ([FixityDecl Name], [Id], UniqFM Class, UniqFM TyCon, Bag InstInfo), FiniteMap TyCon [(Bool, [Labda UniType])], E, PprStyle -> Int -> Bool -> PrettyRep) (Bag (PprStyle -> Int -> Bool -> PrettyRep))