module TcHsSyn (
TcIdBndr(..), TcIdOcc(..),
- TcMonoBinds(..), TcHsBinds(..), TcBind(..), TcPat(..), TcExpr(..), TcGRHSsAndBinds(..),
- TcGRHS(..), TcMatch(..), TcQual(..), TcStmt(..), TcArithSeqInfo(..), TcHsModule(..),
+ TcMonoBinds(..), TcHsBinds(..), TcBind(..), TcPat(..),
+ TcExpr(..), TcGRHSsAndBinds(..), TcGRHS(..), TcMatch(..),
+ TcQual(..), TcStmt(..), TcArithSeqInfo(..), TcRecordBinds(..),
+ TcHsModule(..),
- TypecheckedHsBinds(..), TypecheckedBind(..), TypecheckedMonoBinds(..),
- TypecheckedPat(..), TypecheckedHsExpr(..), TypecheckedArithSeqInfo(..),
- TypecheckedQual(..), TypecheckedStmt(..), TypecheckedMatch(..),
- TypecheckedHsModule(..), TypecheckedGRHSsAndBinds(..), TypecheckedGRHS(..),
+ TypecheckedHsBinds(..), TypecheckedBind(..),
+ TypecheckedMonoBinds(..), TypecheckedPat(..),
+ TypecheckedHsExpr(..), TypecheckedArithSeqInfo(..),
+ TypecheckedQual(..), TypecheckedStmt(..),
+ TypecheckedMatch(..), TypecheckedHsModule(..),
+ TypecheckedGRHSsAndBinds(..), TypecheckedGRHS(..),
mkHsTyApp, mkHsDictApp,
mkHsTyLam, mkHsDictLam,
+ tcIdType,
zonkBinds,
zonkInst,
-- friends:
import HsSyn -- oodles of it
import Id ( GenId(..), IdDetails, PragmaInfo, -- Can meddle modestly with Ids
- DictVar(..)
+ DictVar(..), idType
)
-- others:
type TcQual s = Qual (TcTyVar s) UVar (TcIdOcc s) (TcPat s)
type TcStmt s = Stmt (TcTyVar s) UVar (TcIdOcc s) (TcPat s)
type TcArithSeqInfo s = ArithSeqInfo (TcTyVar s) UVar (TcIdOcc s) (TcPat s)
+type TcRecordBinds s = HsRecordBinds (TcTyVar s) UVar (TcIdOcc s) (TcPat s)
type TcHsModule s = HsModule (TcTyVar s) UVar (TcIdOcc s) (TcPat s)
type TypecheckedPat = OutPat TyVar UVar Id
mkHsDictLam [] expr = expr
mkHsDictLam dicts expr = DictLam dicts expr
+
+tcIdType :: TcIdOcc s -> TcType s
+tcIdType (TcId id) = idType id
+tcIdType other = panic "tcIdType"
\end{code}