[GHC] #16141: StrictData and TypeFamilies regression

GHC ghc-devs at haskell.org
Tue Jan 22 14:04:59 UTC 2019


#16141: StrictData and TypeFamilies regression
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  (none)
            Type:  bug               |               Status:  merge
        Priority:  highest           |            Milestone:  8.6.4
       Component:  Compiler (Type    |              Version:  8.6.3
  checker)                           |
      Resolution:  fixed             |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  GHC rejects       |            Test Case:
  valid program                      |  typecheck/should_compile/T16141
      Blocked By:                    |             Blocking:
 Related Tickets:  #16191            |  Differential Rev(s):
       Wiki Page:                    |  https://gitlab.haskell.org/ghc/ghc/merge_requests/88
-------------------------------------+-------------------------------------

Comment (by Marge Bot <ben+marge-bot@…>):

 In [changeset:"a5373c1fe172dee31e07bcb7c7f6caff1035e6ba/ghc" a5373c1/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="a5373c1fe172dee31e07bcb7c7f6caff1035e6ba"
 Fix bogus worker for newtypes

 The "worker" for a newtype is actually a function
 with a small (compulsory) unfolding, namely a cast.

 But the construction of this function was plain wrong
 for newtype /instances/; it cast the arguemnt to the
 family type rather than the representation type.

 This never actually bit us because, in the case of a
 family instance, we immediately cast the result to
 the family type.  So we get
    \x. (x |> co1) |> co2

 where the compositio of co1 and co2 is ill-kinded.
 However the optimiser (even the simple optimiser)
 just collapsed those casts, ignoring the mis-match
 in the middle, so we never saw the problem.

 Trac #16191 is indeed a dup of #16141; but the resaon
 these tickets produce Lint errors is not the unnecessary
 forcing; it's because of the ill-typed casts.

 This patch fixes the ill-typed casts, properly.  I can't
 see a way to trigger an actual failure prior to this
 patch, but it's still wrong wrong wrong to have ill-typed
 casts, so better to get rid of them.
 }}}

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


More information about the ghc-tickets mailing list