summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'compiler')
-rw-r--r--compiler/GHC/Builtin/PrimOps.hs13
-rw-r--r--compiler/GHC/Builtin/Utils.hs7
-rw-r--r--compiler/GHC/Iface/Load.hs3
-rw-r--r--compiler/ghc.mk5
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