Fix #12102/#15872 by removing outdated users' guide prose
authorRyan Scott <ryan.gl.scott@gmail.com>
Fri, 7 Dec 2018 14:35:53 +0000 (09:35 -0500)
committerRyan Scott <ryan.gl.scott@gmail.com>
Fri, 7 Dec 2018 15:01:41 +0000 (10:01 -0500)
commit73cce63f33ee80f5095085141df9313ac70d1cfa
tree373499a9b04736e4ca19fff81f06e1e32d1a2f79
parentf334d20e00e3f4bd217e49216b7e9d9c8779db10
Fix #12102/#15872 by removing outdated users' guide prose

Summary:
In the beginning, #12102 (and #15872, which is of a similar
ilk) were caused by a poor, confused user trying to use code that
looks like this (with a constraint in the kind of a data type):

```lang=haskell
type family IsTypeLit a where
  IsTypeLit Nat    = 'True
  IsTypeLit Symbol = 'True
  IsTypeLit a      = 'False

data T :: forall a. (IsTypeLit a ~ 'True) => a -> * where
  MkNat    :: T 42
  MkSymbol :: T "Don't panic!"
```

Many bizarre GHC quirks (documented in those tickets) arose from
this sort of construction. Ultimately, the use of constraints in
data type kinds like this has made a lot of people very confused and
been widely regarded as a bad move.

Commit 2257a86daa72db382eb927df12a718669d5491f8 finally put this
feature out of its misery, so now the code above simply errors with
`Illegal constraint in a kind`. As a result, the aforementioned
tickets are moot, so this patch wraps a bow on the whole thing by:

1. Removing the (now outdated) section on constraints in data type
   kinds from the users' guide, and
2. Adding a test case to test this code path.

Test Plan: make test TEST=T12102

Reviewers: goldfire, simonpj, bgamari, tdammers

Reviewed By: tdammers

Subscribers: tdammers, rwbarton, carter

GHC Trac Issues: #12102, #15872

Differential Revision: https://phabricator.haskell.org/D5397
docs/users_guide/glasgow_exts.rst
testsuite/tests/typecheck/should_fail/T12102.hs [new file with mode: 0644]
testsuite/tests/typecheck/should_fail/T12102.stderr [new file with mode: 0644]
testsuite/tests/typecheck/should_fail/all.T