aboutsummaryrefslogtreecommitdiff
path: root/haddock-api/src/Haddock/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'haddock-api/src/Haddock/Types.hs')
-rw-r--r--haddock-api/src/Haddock/Types.hs106
1 files changed, 75 insertions, 31 deletions
diff --git a/haddock-api/src/Haddock/Types.hs b/haddock-api/src/Haddock/Types.hs
index 83c9dd72..5c6f09a3 100644
--- a/haddock-api/src/Haddock/Types.hs
+++ b/haddock-api/src/Haddock/Types.hs
@@ -1,4 +1,5 @@
{-# LANGUAGE CPP, DeriveDataTypeable, DeriveFunctor, DeriveFoldable, DeriveTraversable, StandaloneDeriving, TypeFamilies, RecordWildCards #-}
+{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE PartialTypeSignatures #-}
{-# LANGUAGE UndecidableInstances #-} -- Note [Pass sensitive types]
@@ -46,6 +47,7 @@ import Data.Void (Void)
import Documentation.Haddock.Types
import GHC.Types.Basic (PromotionFlag(..))
import GHC.Types.Fixity (Fixity(..))
+import GHC.Types.Var (Specificity)
import GHC
import GHC.Driver.Session (Language)
@@ -406,13 +408,13 @@ instance (OutputableBndrId p)
-- 'PseudoFamilyDecl' type is introduced.
data PseudoFamilyDecl name = PseudoFamilyDecl
{ pfdInfo :: FamilyInfo name
- , pfdLName :: Located (IdP name)
+ , pfdLName :: LocatedN (IdP name)
, pfdTyVars :: [LHsType name]
, pfdKindSig :: LFamilyResultSig name
}
-mkPseudoFamilyDecl :: FamilyDecl (GhcPass p) -> PseudoFamilyDecl (GhcPass p)
+mkPseudoFamilyDecl :: FamilyDecl GhcRn -> PseudoFamilyDecl GhcRn
mkPseudoFamilyDecl (FamilyDecl { .. }) = PseudoFamilyDecl
{ pfdInfo = fdInfo
, pfdLName = fdLName
@@ -420,12 +422,12 @@ mkPseudoFamilyDecl (FamilyDecl { .. }) = PseudoFamilyDecl
, pfdKindSig = fdResultSig
}
where
- mkType :: HsTyVarBndr flag (GhcPass p) -> HsType (GhcPass p)
+ mkType :: HsTyVarBndr flag GhcRn -> HsType GhcRn
mkType (KindedTyVar _ _ (L loc name) lkind) =
- HsKindSig noExtField tvar lkind
+ HsKindSig noAnn tvar lkind
where
- tvar = L loc (HsTyVar noExtField NotPromoted (L loc name))
- mkType (UserTyVar _ _ name) = HsTyVar noExtField NotPromoted name
+ tvar = L (na2la loc) (HsTyVar noAnn NotPromoted (L loc name))
+ mkType (UserTyVar _ _ name) = HsTyVar noAnn NotPromoted name
-- | An instance head that may have documentation and a source location.
@@ -694,36 +696,69 @@ liftErrMsg = writer . runWriter
-- * Pass sensitive types
-----------------------------------------------------------------------------
-type instance XRec DocNameI a = Located a
+type instance XRec DocNameI a = GenLocated (Anno a) a
instance UnXRec DocNameI where
unXRec = unLoc
instance MapXRec DocNameI where
mapXRec = fmap
-instance WrapXRec DocNameI where
- wrapXRec = noLoc
-
-type instance XForAllTy DocNameI = NoExtField
-type instance XQualTy DocNameI = NoExtField
-type instance XTyVar DocNameI = NoExtField
-type instance XStarTy DocNameI = NoExtField
-type instance XAppTy DocNameI = NoExtField
-type instance XAppKindTy DocNameI = NoExtField
-type instance XFunTy DocNameI = NoExtField
-type instance XListTy DocNameI = NoExtField
-type instance XTupleTy DocNameI = NoExtField
-type instance XSumTy DocNameI = NoExtField
-type instance XOpTy DocNameI = NoExtField
-type instance XParTy DocNameI = NoExtField
-type instance XIParamTy DocNameI = NoExtField
-type instance XKindSig DocNameI = NoExtField
+instance WrapXRec DocNameI (HsType DocNameI) where
+ wrapXRec = noLocA
+
+type instance Anno DocName = SrcSpanAnnN
+type instance Anno (HsTyVarBndr flag DocNameI) = SrcSpanAnnA
+type instance Anno [LocatedA (HsType DocNameI)] = SrcSpanAnnC
+type instance Anno (HsType DocNameI) = SrcSpanAnnA
+type instance Anno (DataFamInstDecl DocNameI) = SrcSpanAnnA
+type instance Anno (DerivStrategy DocNameI) = SrcSpan
+type instance Anno (FieldOcc DocNameI) = SrcSpan
+type instance Anno (ConDeclField DocNameI) = SrcSpan
+type instance Anno (Located (ConDeclField DocNameI)) = SrcSpan
+type instance Anno [Located (ConDeclField DocNameI)] = SrcSpan
+type instance Anno (ConDecl DocNameI) = SrcSpan
+type instance Anno (FunDep DocNameI) = SrcSpan
+type instance Anno (TyFamInstDecl DocNameI) = SrcSpanAnnA
+type instance Anno [LocatedA (TyFamInstDecl DocNameI)] = SrcSpanAnnL
+type instance Anno (FamilyDecl DocNameI) = SrcSpan
+type instance Anno (Sig DocNameI) = SrcSpan
+type instance Anno (InjectivityAnn DocNameI) = SrcSpan
+type instance Anno (HsDecl DocNameI) = SrcSpanAnnA
+type instance Anno (FamilyResultSig DocNameI) = SrcSpan
+type instance Anno (HsOuterTyVarBndrs Specificity DocNameI) = SrcSpanAnnA
+type instance Anno (HsSigType DocNameI) = SrcSpanAnnA
+
+type XRecCond a
+ = ( XParTy a ~ ApiAnn' AnnParen
+ -- , XParTy (NoGhcTc a) ~ ApiAnn' AnnParen
+ -- , NoGhcTcPass (NoGhcTcPass a) ~ NoGhcTcPass a
+ -- , IsPass a
+ , NoGhcTc a ~ a
+ , MapXRec a
+ , UnXRec a
+ , WrapXRec a (HsType a)
+ )
+
+type instance XForAllTy DocNameI = ApiAnn
+type instance XQualTy DocNameI = ApiAnn
+type instance XTyVar DocNameI = ApiAnn
+type instance XStarTy DocNameI = ApiAnn
+type instance XAppTy DocNameI = ApiAnn
+type instance XAppKindTy DocNameI = ApiAnn
+type instance XFunTy DocNameI = ApiAnn
+type instance XListTy DocNameI = ApiAnn' AnnParen
+type instance XTupleTy DocNameI = ApiAnn' AnnParen
+type instance XSumTy DocNameI = ApiAnn' AnnParen
+type instance XOpTy DocNameI = ApiAnn
+type instance XParTy DocNameI = ApiAnn' AnnParen
+type instance XIParamTy DocNameI = ApiAnn
+type instance XKindSig DocNameI = ApiAnn
type instance XSpliceTy DocNameI = Void -- see `renameHsSpliceTy`
-type instance XDocTy DocNameI = NoExtField
-type instance XBangTy DocNameI = NoExtField
-type instance XRecTy DocNameI = NoExtField
-type instance XExplicitListTy DocNameI = NoExtField
-type instance XExplicitTupleTy DocNameI = NoExtField
-type instance XTyLit DocNameI = NoExtField
-type instance XWildCardTy DocNameI = NoExtField
+type instance XDocTy DocNameI = ApiAnn
+type instance XBangTy DocNameI = ApiAnn
+type instance XRecTy DocNameI = ApiAnn
+type instance XExplicitListTy DocNameI = ApiAnn
+type instance XExplicitTupleTy DocNameI = ApiAnn
+type instance XTyLit DocNameI = ApiAnn
+type instance XWildCardTy DocNameI = ApiAnn
type instance XXType DocNameI = HsCoreTy
type instance XHsForAllVis DocNameI = NoExtField
@@ -766,6 +801,9 @@ type instance XXFamEqn DocNameI _ = NoExtCon
type instance XCClsInstDecl DocNameI = NoExtField
type instance XCDerivDecl DocNameI = NoExtField
+type instance XStockStrategy DocNameI = NoExtField
+type instance XAnyClassStrategy DocNameI = NoExtField
+type instance XNewtypeStrategy DocNameI = NoExtField
type instance XViaStrategy DocNameI = LHsSigType DocNameI
type instance XDataFamInstD DocNameI = NoExtField
type instance XTyFamInstD DocNameI = NoExtField
@@ -793,3 +831,9 @@ type instance XConDeclField DocNameI = NoExtField
type instance XXConDeclField DocNameI = NoExtCon
type instance XXPat DocNameI = NoExtCon
+
+type instance XCInjectivityAnn DocNameI = NoExtField
+
+type instance XCFunDep DocNameI = NoExtField
+
+type instance XCTyFamInstDecl DocNameI = NoExtField