[GHC] #10598: DeriveAnyClass and GND don't work well together

GHC ghc-devs at haskell.org
Sun Jul 12 16:27:00 UTC 2015


#10598: DeriveAnyClass and GND don't work well together
-------------------------------------+-------------------------------------
        Reporter:  osa1              |                   Owner:
            Type:  bug               |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.11
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
 Type of failure:  None/Unknown      |  Unknown/Multiple
      Blocked By:                    |               Test Case:
 Related Tickets:                    |                Blocking:
                                     |  Differential Revisions:
-------------------------------------+-------------------------------------

Comment (by osa1):

 Oh you're right. I forgot that DeriveAnyClass should never fail, so maybe
 there are multiple bugs involved.

 I managed to modify GHC to make this program work:

 {{{
 ➜  deriveany_bug  cat Test.hs
 newtype MyMaybe a = MyMaybe (Maybe a)
   deriving (Functor, Show)

 main = print $ MyMaybe $ Just (10 :: Int)

 ➜  deriveany_bug  ghc-stage1 --make Test.hs -fforce-recomp
 -XDeriveAnyClass
 [1 of 1] Compiling Main             ( Test.hs, Test.o )
 Linking Test ...

 ➜  deriveany_bug  ./Test
 MyMaybe (Just 10)

 ➜  deriveany_bug  ghc-stage1 --make Test.hs -fforce-recomp
 -XDeriveAnyClass -XGeneralizedNewtypeDeriving
 [1 of 1] Compiling Main             ( Test.hs, Test.o )

 Test.hs:2:13: warning:
     Both DeriveAnyClass and GeneralizedNewtypeDeriving are enabled
     Defaulting to the DeriveAnyClass strategy for instantiating Functor
     In the newtype declaration for ‘MyMaybe’

 Test.hs:2:22: warning:
     Both DeriveAnyClass and GeneralizedNewtypeDeriving are enabled
     Defaulting to the DeriveAnyClass strategy for instantiating Show
     In the newtype declaration for ‘MyMaybe’
 Linking Test ...

 ➜  deriveany_bug  ./Test
 MyMaybe (Just 10)
 }}}

 `mkNewTypeEqn` function has some error handling for the cases where we
 have both GND and DeriveAnyClass, but the logic is buggy, I think. It's
 easy to fix. (I didn't run the whole test suite though, I'm not 100% sure
 I didn't break anything)

 Should I send a patch for reviews or do you think the problem is something
 else?

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


More information about the ghc-tickets mailing list