summaryrefslogtreecommitdiff
path: root/utils/genprimopcode/Parser.y
diff options
context:
space:
mode:
authorAlec Theriault <alec.theriault@gmail.com>2018-10-04 11:18:54 -0400
committerRyan Scott <ryan.gl.scott@gmail.com>2018-10-04 11:19:22 -0400
commitfeb8a671a4e92922ddac108686f0eace97dd331f (patch)
treebfe8aaa472f25d2f6a936418b03c57d04e62ff4e /utils/genprimopcode/Parser.y
parent60b547b583f27f436912acd70e674cd9f34d72b2 (diff)
downloadhaskell-feb8a671a4e92922ddac108686f0eace97dd331f.tar.gz
Improve generated `GHC.Prim` docs
Summary: * Extended `genprimcode` to generate Haddock-compatible deprecations, as well as displaying information about which functions are LLVM-only and which functions can fail with an unchecked exception. * Ported existing deprecations to the new format, and also added a deprecation on `par#` (see Trac #15227). * Emit an error on fixity/deprecation of builtins, unless we are processing the module in which that name is defined (see Trac #15233). That means the following is no longer accepted (outside of `GHC.Types`): ``` infixr 7 : {-# DEPRECATED (:) "cons is deprecated" #-} ``` * Generate `data (->) a b` with docs and fixity in `GHC.Prim`. This means: GHC can now parse `data (->) a b` and `infixr 0 ->` (only in `GHC.Prim`) and `genprimcode` can digest `primtype (->) a b` (See Trac #4861) as well as some misc fixes along the way. Reviewers: bgamari, RyanGlScott Reviewed By: RyanGlScott Subscribers: RyanGlScott, rwbarton, mpickering, carter GHC Trac Issues: #15227, #15233, #4861 Differential Revision: https://phabricator.haskell.org/D5167
Diffstat (limited to 'utils/genprimopcode/Parser.y')
-rw-r--r--utils/genprimopcode/Parser.y9
1 files changed, 5 insertions, 4 deletions
diff --git a/utils/genprimopcode/Parser.y b/utils/genprimopcode/Parser.y
index cd712d7584..89e61d5236 100644
--- a/utils/genprimopcode/Parser.y
+++ b/utils/genprimopcode/Parser.y
@@ -183,10 +183,11 @@ ppT : lowerName { TyVar $1 }
pTycon :: { TyCon }
pTycon : upperName { TyCon $1 }
- | '(' ')' { TyCon "()" }
- | SCALAR { SCALAR }
- | VECTOR { VECTOR }
- | VECTUPLE { VECTUPLE }
+ | '(' ')' { TyCon "()" }
+ | '(' '->' ')' { TyCon "->" }
+ | SCALAR { SCALAR }
+ | VECTOR { VECTOR }
+ | VECTUPLE { VECTUPLE }
{
parse :: String -> Either String Info