[GHC] #10347: Spurious "unused constructor" warning with Coercible

GHC ghc-devs at haskell.org
Thu Apr 23 13:52:30 UTC 2015


#10347: Spurious "unused constructor" warning with Coercible
-------------------------------------+-------------------------------------
              Reporter:  goldfire    |             Owner:  goldfire
                  Type:  bug         |            Status:  new
              Priority:  normal      |         Milestone:
             Component:  Compiler    |           Version:  7.11
              Keywords:              |  Operating System:  Unknown/Multiple
          Architecture:              |   Type of failure:  Incorrect
  Unknown/Multiple                   |  warning at compile-time
             Test Case:              |        Blocked By:
              Blocking:              |   Related Tickets:
Differential Revisions:              |
-------------------------------------+-------------------------------------
 When I say

 {{{
 {-# LANGUAGE RoleAnnotations #-}

 module Bug (N, twiddle) where

 import Data.Coerce

 newtype N a = MkN Int
 type role N representational

 twiddle :: N a -> N b
 twiddle = coerce
 }}}

 I get

 {{{
 Bug.hs:7:15: warning: Defined but not used: data constructor ‘MkN’
 }}}

 But the constructor ''is'' used, in order to do the coercion. The role
 annotation is to force GHC to use the constructor to do the coercion --
 otherwise, it might not have.

 This bug exists in 7.10 and in HEAD.

 I will fix.

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


More information about the ghc-tickets mailing list