isClassOpSig, isPragSig,
placeHolderType
)
-import BasicTypes ( RecFlag(..), StrictnessMark(..) )
+import BasicTypes ( RecFlag(..) )
import RnHsSyn ( RenamedTyClDecl, RenamedSig,
RenamedClassOpSig, RenamedMonoBinds,
maybeGenericMatch
import TyCon ( tyConGenInfo )
import Subst ( substTyWith )
import MkId ( mkDictSelId, mkDefaultMethodId )
-import Id ( Id, idType, idName, mkUserLocal, setIdLocalExported, setInlinePragma )
+import Id ( Id, idType, idName, mkUserLocal, setInlinePragma )
import Name ( Name, NamedThing(..) )
import NameEnv ( NameEnv, lookupNameEnv, emptyNameEnv, unitNameEnv, plusNameEnv )
import NameSet ( emptyNameSet, unitNameSet )
-import OccName ( mkClassTyConOcc, mkClassDataConOcc, mkWorkerOcc,
- mkSuperDictSelOcc, reportIfUnused )
+import OccName ( mkClassTyConOcc, mkClassDataConOcc, mkSuperDictSelOcc, reportIfUnused )
import Outputable
import Var ( TyVar )
import CmdLineOpts
in
tcExtendTyVarEnv tyvars $
- checkDefaultBinds clas op_names def_methods `thenM` \ mb_dm_env ->
+ checkDefaultBinds clas op_names def_methods `thenM` \ mb_dm_env ->
-- CHECK THE CONTEXT
-- The renamer has already checked that the context mentions
sc_tys = mkPredTys sc_theta
dict_component_tys = sc_tys ++ op_tys
sc_sel_ids = [mkDictSelId sc_name clas | sc_name <- sc_sel_names]
- -- Slightly curiously, the dictionary selectors are treated as RecordSelectorIds,
- -- so they are treated as implicit Ids, but we don't give labelled fields to
- -- the data constructors
in
tcMkDataCon datacon_name
[{- No strictness -}]
-> TcM (Maybe Inst, Id)
-- mkMethId instantiates the selector Id at the specified types
--- THe
mkMethId origin clas sel_id inst_tys
= let
(tyvars,rho) = tcSplitForAllTys (idType sel_id)