Skip to content

Fix #16293 by cleaning up Proxy# infelicities

Ryan Scott requested to merge RyanGlScott/ghc:wip/T16293 into master

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.

Edited by Richard Eisenberg

Merge request reports