Constraint vs *
I first noticed something was a bit odd with `Constraint` when chasing #11334. Consider this testcase (`-O0` is sufficient),
```hs
import Data.Typeable
main = do
print $ typeRep (Proxy :: Proxy Eq)
print $ typeOf (Proxy :: Proxy Eq)
```
With `ghc-8.0` this will produce,
```
Eq
Proxy (* -> *) Eq
```
Notice the second line; GHC seems to be claiming that `Eq :: * -> *`, which is clearly nonsense.
I believe this issue may be the cause of some of the testsuite failures that I'm seeing on #11011. Unfortunately I haven't the foggiest where this issue might originate.
See also
- #11621
- #12933
- #9547
- #13931
- #15918 (about `mkCastTy`)
- #21530 (ultimately also about `mkCastTy`)
issue