[GHC] #15330: Error message prints invisible kind arguments in a visible matter

GHC ghc-devs at haskell.org
Wed Jul 11 16:31:35 UTC 2018


#15330: Error message prints invisible kind arguments in a visible matter
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  (none)
            Type:  bug               |               Status:  patch
        Priority:  normal            |            Milestone:  8.8.1
       Component:  Compiler (Type    |              Version:  8.4.3
  checker)                           |
      Resolution:                    |             Keywords:  TypeInType
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Poor/confusing    |  Unknown/Multiple
  error message                      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D4938
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by Ryan Scott <ryan.gl.scott@…>):

 In [changeset:"1c3536239cb5e83ff1427ac410d8fa2549e7d9c0/ghc"
 1c353623/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="1c3536239cb5e83ff1427ac410d8fa2549e7d9c0"
 Use IfaceAppArgs to store an IfaceAppTy's arguments

 Summary:
 Currently, an `IfaceAppTy` has no way to tell whether its
 argument is visible or not, so it simply treats all arguments as
 visible, leading to #15330. We already have a solution for this
 problem in the form of the `IfaceTcArgs` data structure, used by
 `IfaceTyConApp` to represent the arguments to a type constructor.
 Therefore, it makes sense to reuse this machinery for `IfaceAppTy`,
 so this patch does just that.

 This patch:

 1. Renames `IfaceTcArgs` to `IfaceAppArgs` to reflect its more
    general purpose.
 2. Changes the second field of `IfaceAppTy` from `IfaceType` to
    `IfaceAppArgs`, and propagates the necessary changes through. In
    particular, pretty-printing an `IfaceAppTy` now goes through the
    `IfaceAppArgs` pretty-printer, which correctly displays arguments
    as visible or not for free, fixing #15330.
 3. Changes `toIfaceTypeX` and related functions so that when
    converting an `AppTy` to an `IfaceAppTy`, it flattens as many
    argument `AppTy`s as possible, and then converts those arguments
    into an `IfaceAppArgs` list, using the kind of the function
    `Type` as a guide. (Doing so minimizes the number of times we need
    to call `typeKind`, which is more expensive that finding the kind
    of a `TyCon`.)

 Test Plan: make test TEST=T15330

 Reviewers: goldfire, simonpj, bgamari

 Reviewed By: simonpj

 Subscribers: rwbarton, thomie, carter

 GHC Trac Issues: #15330

 Differential Revision: https://phabricator.haskell.org/D4938
 }}}

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


More information about the ghc-tickets mailing list