diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/GHC/Builtin/PrimOps.hs | 13 | ||||
-rw-r--r-- | compiler/GHC/Builtin/Utils.hs | 7 | ||||
-rw-r--r-- | compiler/GHC/Iface/Load.hs | 3 | ||||
-rw-r--r-- | compiler/ghc.mk | 5 |
4 files changed, 25 insertions, 3 deletions
diff --git a/compiler/GHC/Builtin/PrimOps.hs b/compiler/GHC/Builtin/PrimOps.hs index e85c12a55d..b3861c83aa 100644 --- a/compiler/GHC/Builtin/PrimOps.hs +++ b/compiler/GHC/Builtin/PrimOps.hs @@ -16,7 +16,7 @@ module GHC.Builtin.PrimOps ( primOpOutOfLine, primOpCodeSize, primOpOkForSpeculation, primOpOkForSideEffects, - primOpIsCheap, primOpFixity, + primOpIsCheap, primOpFixity, primOpDocs, getPrimOpResultInfo, isComparisonPrimOp, PrimOpResultInfo(..), @@ -164,6 +164,17 @@ primOpFixity :: PrimOp -> Maybe Fixity {- ************************************************************************ * * +\subsubsection{Docs} +* * +************************************************************************ +-} + +primOpDocs :: PrimOp -> Maybe String +#include "primop-docs.hs-incl" + +{- +************************************************************************ +* * \subsubsection[PrimOp-comparison]{PrimOpInfo basic comparison ops} * * ************************************************************************ diff --git a/compiler/GHC/Builtin/Utils.hs b/compiler/GHC/Builtin/Utils.hs index 0725ee85fa..1c7ede7c64 100644 --- a/compiler/GHC/Builtin/Utils.hs +++ b/compiler/GHC/Builtin/Utils.hs @@ -34,6 +34,7 @@ module GHC.Builtin.Utils ( primOpRules, builtinRules, ghcPrimExports, + ghcPrimDeclDocs, primOpId, -- * Random other things @@ -71,11 +72,13 @@ import GHC.Core.TyCon import GHC.Types.Unique.FM import Util import GHC.Builtin.Types.Literals ( typeNatTyCons ) +import GHC.Hs.Doc import Control.Applicative ((<|>)) import Data.List ( intercalate ) import Data.Array import Data.Maybe +import qualified Data.Map as Map {- ************************************************************************ @@ -256,6 +259,10 @@ ghcPrimExports [ AvailTC n [n] [] | tc <- funTyCon : exposedPrimTyCons, let n = tyConName tc ] +ghcPrimDeclDocs :: DeclDocMap +ghcPrimDeclDocs = DeclDocMap $ Map.fromList $ mapMaybe mkDeclDoc allThePrimOps + where mkDeclDoc po = fmap (\doc -> (idName (primOpId po), mkHsDocString doc)) $ primOpDocs po + {- ************************************************************************ * * diff --git a/compiler/GHC/Iface/Load.hs b/compiler/GHC/Iface/Load.hs index 8fc46734c2..4a0ed966d1 100644 --- a/compiler/GHC/Iface/Load.hs +++ b/compiler/GHC/Iface/Load.hs @@ -1049,7 +1049,8 @@ ghcPrimIface mi_exports = ghcPrimExports, mi_decls = [], mi_fixities = fixities, - mi_final_exts = (mi_final_exts empty_iface){ mi_fix_fn = mkIfaceFixCache fixities } + mi_final_exts = (mi_final_exts empty_iface){ mi_fix_fn = mkIfaceFixCache fixities }, + mi_decl_docs = ghcPrimDeclDocs } where empty_iface = emptyFullModIface gHC_PRIM diff --git a/compiler/ghc.mk b/compiler/ghc.mk index 561926af44..d86aae9771 100644 --- a/compiler/ghc.mk +++ b/compiler/ghc.mk @@ -119,7 +119,8 @@ PRIMOP_BITS_NAMES = primop-data-decl.hs-incl \ primop-vector-uniques.hs-incl \ primop-vector-tys.hs-incl \ primop-vector-tys-exports.hs-incl \ - primop-vector-tycons.hs-incl + primop-vector-tycons.hs-incl \ + primop-docs.hs-incl PRIMOP_BITS_STAGE1 = $(addprefix compiler/stage1/build/,$(PRIMOP_BITS_NAMES)) PRIMOP_BITS_STAGE2 = $(addprefix compiler/stage2/build/,$(PRIMOP_BITS_NAMES)) @@ -166,6 +167,8 @@ compiler/stage$1/build/primop-vector-tys-exports.hs-incl: compiler/stage$1/build "$$(genprimopcode_INPLACE)" --primop-vector-tys-exports < $$< > $$@ compiler/stage$1/build/primop-vector-tycons.hs-incl: compiler/stage$1/build/primops.txt $$$$(genprimopcode_INPLACE) "$$(genprimopcode_INPLACE)" --primop-vector-tycons < $$< > $$@ +compiler/stage$1/build/primop-docs.hs-incl: compiler/stage$1/build/primops.txt $$$$(genprimopcode_INPLACE) + "$$(genprimopcode_INPLACE)" --wired-in-docs < $$< > $$@ # Usages aren't used any more; but the generator # can still generate them if we want them back |