Improve generated `GHC.Prim` docs
authorAlec Theriault <alec.theriault@gmail.com>
Thu, 4 Oct 2018 15:18:54 +0000 (11:18 -0400)
committerRyan Scott <ryan.gl.scott@gmail.com>
Thu, 4 Oct 2018 15:19:22 +0000 (11:19 -0400)
commitfeb8a671a4e92922ddac108686f0eace97dd331f
treebfe8aaa472f25d2f6a936418b03c57d04e62ff4e
parent60b547b583f27f436912acd70e674cd9f34d72b2
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
12 files changed:
compiler/iface/LoadIface.hs
compiler/parser/Parser.y
compiler/prelude/TysWiredIn.hs
compiler/prelude/primops.txt.pp
compiler/rename/RnEnv.hs
compiler/types/TyCon.hs
testsuite/tests/parser/should_fail/T15233.hs [new file with mode: 0644]
testsuite/tests/parser/should_fail/T15233.stderr [new file with mode: 0644]
testsuite/tests/parser/should_fail/all.T
utils/genprimopcode/Lexer.x
utils/genprimopcode/Main.hs
utils/genprimopcode/Parser.y