[GHC] #15415: GHCi's :kind doesn't work with wildcards

GHC ghc-devs at haskell.org
Thu Jul 19 00:39:28 UTC 2018


#15415: GHCi's :kind doesn't work with wildcards
-------------------------------------+-------------------------------------
           Reporter:  goldfire       |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:  8.6.1
          Component:  Compiler       |           Version:  8.5
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):                 |         Wiki Page:
-------------------------------------+-------------------------------------
 Witness this GHCi session:

 {{{
 rae:20:35:37 ~/ghc/ghc-head/ghc> ~/ghc/ghc-head/inplace/bin/ghc-stage2
 --interactive
 GHCi, version 8.7.20180716: http://www.haskell.org/ghc/  :? for help
 Loaded GHCi configuration from /Users/rae/.ghc/ghci.conf
 Prelude> :set -XPartialTypeSignatures
 Prelude> import Data.Proxy
 Prelude Data.Proxy> :k Proxy _
 Proxy _ :: *
 Prelude Data.Proxy> :k Proxy (Maybe :: _)

 <interactive>:1:8: error:
     • Expecting one more argument to ‘Maybe’
       Expected kind ‘_’, but ‘Maybe’ has kind ‘* -> *’
     • In the first argument of ‘Proxy’, namely ‘(Maybe :: _)’
       In the type ‘Proxy (Maybe :: _)’
 }}}

 It seems we're not doing the correct wildcard thing here: GHCi should
 report that `_` should be `Type -> Type`.

 I believe that this is because `TcHsType.tcWildCardBinders` uses
 `newSkolemTyVar` internally; `tcWildCardBinders` is called from
 `TcRnDriver.tcRnType`, which is the implementation of GHCi's `:kind`. This
 is GHC's only call of `tcWildCardBinders`. All other places use
 `tcWildCardBindersX newWildTyVar`, which makes vastly more sense.

 I would just fix this myself, but it smells intentional. Does anyone know
 why we have all this?

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15415>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list