import Module ( Module, mkModule )
import RdrHsSyn ( mkClassDecl, mkTyData )
import qualified OccName
-import OccName ( startsVarId, startsVarSym, startsConId, startsConSym )
+import OccName ( startsVarId, startsVarSym, startsConId, startsConSym,
+ pprNameSpace )
import SrcLoc ( Located(..), SrcSpan )
import Type ( Type )
import TysWiredIn ( unitTyCon, tupleTyCon, tupleCon, trueDataCon, nilDataCon, consDataCon )
cvtBind (TH.ValD (TH.VarP s) body ds)
= do { s' <- vNameL s
; cl' <- cvtClause (Clause [] body ds)
- ; returnL $ FunBind s' False (mkMatchGroup [cl']) placeHolderNames }
+ ; returnL $ mkFunBind s' [cl'] }
cvtBind (TH.FunD nm cls)
= do { nm' <- vNameL nm
; cls' <- mapM cvtClause cls
- ; returnL $ FunBind nm' False (mkMatchGroup cls') placeHolderNames }
+ ; returnL $ mkFunBind nm' cls' }
cvtBind (TH.ValD p body ds)
= do { p' <- cvtPat p
; g' <- cvtGuard body
; ds' <- cvtDecs ds
- ; returnL $ PatBind p' (GRHSs g' ds') void placeHolderNames }
+ ; returnL $ PatBind { pat_lhs = p', pat_rhs = GRHSs g' ds',
+ pat_rhs_ty = void, bind_fvs = placeHolderNames } }
cvtBind d
= failWith (sep [ptext SLIT("Illegal kind of declaration in where clause"),
nest 2 (text (TH.pprint d))])
-
cvtClause :: TH.Clause -> CvtM (Hs.LMatch RdrName)
cvtClause (Clause ps body wheres)
= do { ps' <- cvtPats ps
| otherwise = do { l' <- cvtLit l; return $ Hs.LitPat l' }
cvtp (TH.VarP s) = do { s' <- vName s; return $ Hs.VarPat s' }
cvtp (TupP [p]) = cvtp p
-cvtp (TupP ps) = do { ps' <- cvtPats ps; return $ TuplePat ps' Boxed }
+cvtp (TupP ps) = do { ps' <- cvtPats ps; return $ TuplePat ps' Boxed void }
cvtp (ConP s ps) = do { s' <- cNameL s; ps' <- cvtPats ps; return $ ConPatIn s' (PrefixCon ps') }
cvtp (InfixP p1 s p2) = do { s' <- cNameL s; p1' <- cvtPat p1; p2' <- cvtPat p2
; return $ ConPatIn s' (InfixCon p1' p2') }
badOcc :: OccName.NameSpace -> String -> SDoc
badOcc ctxt_ns occ
- = ptext SLIT("Illegal") <+> text (OccName.nameSpaceString ctxt_ns)
+ = ptext SLIT("Illegal") <+> pprNameSpace ctxt_ns
<+> ptext SLIT("name:") <+> quotes (text occ)
thRdrName :: OccName.NameSpace -> String -> TH.NameFlavour -> RdrName
-- The packing and unpacking is rather turgid :-(
mk_occ :: OccName.NameSpace -> String -> OccName.OccName
-mk_occ ns occ = OccName.mkOccFS ns (mkFastString occ)
+mk_occ ns occ = OccName.mkOccNameFS ns (mkFastString occ)
mk_ghc_ns :: TH.NameSpace -> OccName.NameSpace
mk_ghc_ns TH.DataName = OccName.dataName