diff options
Diffstat (limited to 'haddock-api/src/Haddock/Backends')
| -rw-r--r-- | haddock-api/src/Haddock/Backends/Hoogle.hs | 33 | 
1 files changed, 12 insertions, 21 deletions
| diff --git a/haddock-api/src/Haddock/Backends/Hoogle.hs b/haddock-api/src/Haddock/Backends/Hoogle.hs index 42887834..afa694e3 100644 --- a/haddock-api/src/Haddock/Backends/Hoogle.hs +++ b/haddock-api/src/Haddock/Backends/Hoogle.hs @@ -68,7 +68,8 @@ dropHsDocTy :: HsType a -> HsType a  dropHsDocTy = f      where          g (L src x) = L src (f x) -        f (HsForAllTy a b c d e) = HsForAllTy a b c d (g e) +        f (HsForAllTy a e) = HsForAllTy a (g e) +        f (HsQualTy a e) = HsQualTy a (g e)          f (HsBangTy a b) = HsBangTy a (g b)          f (HsAppTy a b) = HsAppTy (g a) (g b)          f (HsFunTy a b) = HsFunTy (g a) (g b) @@ -85,14 +86,6 @@ outHsType :: OutputableBndr a => DynFlags -> HsType a -> String  outHsType dflags = out dflags . dropHsDocTy -makeExplicit :: HsType a -> HsType a -makeExplicit (HsForAllTy _ a b c d) = HsForAllTy Explicit a b c d -makeExplicit x = x - -makeExplicitL :: LHsType a -> LHsType a -makeExplicitL (L src x) = L src (makeExplicit x) - -  dropComment :: String -> String  dropComment (' ':'-':'-':' ':_) = []  dropComment (x:xs) = x : dropComment xs @@ -129,8 +122,8 @@ ppExport dflags ExportDecl { expItemDecl    = L _ decl          f (TyClD d@DataDecl{})  = ppData dflags d subdocs          f (TyClD d@SynDecl{})   = ppSynonym dflags d          f (TyClD d@ClassDecl{}) = ppClass dflags d subdocs -        f (ForD (ForeignImport name typ _ _)) = ppSig dflags $ TypeSig [name] typ [] -        f (ForD (ForeignExport name typ _ _)) = ppSig dflags $ TypeSig [name] typ [] +        f (ForD (ForeignImport name typ _ _)) = ppSig dflags $ TypeSig [name] typ +        f (ForD (ForeignExport name typ _ _)) = ppSig dflags $ TypeSig [name] typ          f (SigD sig) = ppSig dflags sig ++ ppFixities          f _ = [] @@ -138,7 +131,7 @@ ppExport dflags ExportDecl { expItemDecl    = L _ decl  ppExport _ _ = []  ppSigWithDoc :: DynFlags -> Sig Name -> [(Name, DocForDecl Name)] -> [String] -ppSigWithDoc dflags (TypeSig names sig _) subdocs +ppSigWithDoc dflags (TypeSig names sig) subdocs      = concatMap mkDocSig names      where          mkDocSig n = concatMap (ppDocumentation dflags) (getDoc n) @@ -148,10 +141,7 @@ ppSigWithDoc dflags (TypeSig names sig _) subdocs          getDoc :: Located Name -> [Documentation Name]          getDoc n = maybe [] (return . fst) (lookup (unL n) subdocs) -        typ = case unL sig of -                   HsForAllTy Explicit a b c d  -> HsForAllTy Implicit a b c d -                   HsForAllTy Qualified a b c d -> HsForAllTy Implicit a b c d -                   x -> x +        typ = unL (hsSigType sig)  ppSigWithDoc _ _ _ = []  ppSig :: DynFlags -> Sig Name -> [String] @@ -183,12 +173,13 @@ ppClass dflags decl subdocs = (out dflags decl' ++ ppTyFams) : ppMethods              , rbrace              ] -        addContext (TypeSig name (L l sig) nwcs) = TypeSig name (L l $ f sig) nwcs +        addContext (TypeSig name sig) = TypeSig name (mkHsSigType (f (hsSigType sig)))          addContext (MinimalSig src sig) = MinimalSig src sig          addContext _ = error "expected TypeSig" -        f (HsForAllTy a b c con d) = HsForAllTy a b c (reL (context : unLoc con)) d -        f t = HsForAllTy Implicit Nothing emptyHsQTvs (reL [context]) (reL t) +        f (L _ (HsForAllTy a ty)) = reL (HsForallTy a (f ty)) +        f (L _ (HsQualTy cxt ty)) = HsQualTy (reL (context : unLoc cxt)) ty +        f ty = HsQualTy (reL [context]) ty          context = nlHsTyConApp (tcdName decl)              (map (reL . HsTyVar . hsTyVarName . unL) (hsQTvBndrs (tyClDeclTyVars decl))) @@ -249,10 +240,10 @@ ppCtor dflags dat subdocs con                             [out dflags (map (selectorFieldOcc . unLoc) $ cd_fld_names r) `typeSig` [resType, cd_fld_type r]]                            | r <- map unLoc recs] -        funs = foldr1 (\x y -> reL $ HsFunTy (makeExplicitL x) (makeExplicitL y)) +        funs = foldr1 (\x y -> reL $ HsFunTy x y)          apps = foldl1 (\x y -> reL $ HsAppTy x y) -        typeSig nm flds = operator nm ++ " :: " ++ outHsType dflags (makeExplicit $ unL $ funs flds) +        typeSig nm flds = operator nm ++ " :: " ++ outHsType dflags (unL $ funs flds)          -- We print the constructors as comma-separated list. See GHC          -- docs for con_names on why it is a list to begin with. | 
