Skip to content
  • Ryan Scott's avatar
    Fix #16293 by cleaning up Proxy# infelicities · 012257c1
    Ryan Scott authored and Marge Bot's avatar Marge Bot committed
    This bug fixes three problems related to `Proxy#`/`proxy#`:
    
    1. Reifying it with TH claims that the `Proxy#` type constructor has
       two arguments, but that ought to be one for consistency with
       TH's treatment for other primitive type constructors like `(->)`.
       This was fixed by just returning the number of
       `tyConVisibleTyVars` instead of using `tyConArity` (which includes
       invisible arguments).
    2. The role of `Proxy#`'s visible argument was hard-coded as nominal.
       Easily fixed by changing it to phantom.
    3. The visibility of `proxy#`'s kind argument was specified, which
       is different from the `Proxy` constructor (which treats it as
       inferred). Some minor refactoring in `proxyHashId` fixed ths up.
    
       Along the way, I had to introduce a `mkSpecForAllTy` function, so
       I did some related Haddock cleanup in `Type`, where that function
       lives.
    012257c1