summaryrefslogtreecommitdiff
path: root/compiler/GHC
diff options
context:
space:
mode:
authormniip <mniip@mniip.com>2020-04-22 22:40:58 +0300
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-04-23 18:33:21 -0400
commit2c23e2e37d6c937a425c53da643aec90bda01ef6 (patch)
treefafda34b379a6238e712085d38386a1762238297 /compiler/GHC
parent72da0c29cd7c336cdce3b36d1dd9e8b65a53afbd (diff)
downloadhaskell-2c23e2e37d6c937a425c53da643aec90bda01ef6.tar.gz
Include docs for non-primop entries in primops.txt as well
Diffstat (limited to 'compiler/GHC')
-rw-r--r--compiler/GHC/Builtin/PrimOps.hs8
-rw-r--r--compiler/GHC/Builtin/Utils.hs13
2 files changed, 17 insertions, 4 deletions
diff --git a/compiler/GHC/Builtin/PrimOps.hs b/compiler/GHC/Builtin/PrimOps.hs
index b3861c83aa..75622f7399 100644
--- a/compiler/GHC/Builtin/PrimOps.hs
+++ b/compiler/GHC/Builtin/PrimOps.hs
@@ -167,9 +167,15 @@ primOpFixity :: PrimOp -> Maybe Fixity
\subsubsection{Docs}
* *
************************************************************************
+
+@primOpDocs@ contains the documentation from @primops.txt@ as a list of
+pairs (name, docs). We use stringy names here because wired-in names are
+not available yet, and not all of them are a @PrimOp@ (they could be
+tycons or pseudoops for example)
+
-}
-primOpDocs :: PrimOp -> Maybe String
+primOpDocs :: [(String, String)]
#include "primop-docs.hs-incl"
{-
diff --git a/compiler/GHC/Builtin/Utils.hs b/compiler/GHC/Builtin/Utils.hs
index 1c7ede7c64..2b8b0bf698 100644
--- a/compiler/GHC/Builtin/Utils.hs
+++ b/compiler/GHC/Builtin/Utils.hs
@@ -75,7 +75,7 @@ import GHC.Builtin.Types.Literals ( typeNatTyCons )
import GHC.Hs.Doc
import Control.Applicative ((<|>))
-import Data.List ( intercalate )
+import Data.List ( intercalate , find )
import Data.Array
import Data.Maybe
import qualified Data.Map as Map
@@ -260,8 +260,15 @@ ghcPrimExports
| 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
+ghcPrimDeclDocs = DeclDocMap $ Map.fromList $ mapMaybe findName primOpDocs
+ where
+ names = map idName ghcPrimIds ++
+ map (idName . primOpId) allThePrimOps ++
+ map tyConName (funTyCon : exposedPrimTyCons)
+ findName (nameStr, doc)
+ | Just name <- find ((nameStr ==) . getOccString) names
+ = Just (name, mkHsDocString doc)
+ | otherwise = Nothing
{-
************************************************************************