Unavoidable "unused bindings" warnings in boot files
The -fwarn-unused-binds
flag produces warnings for bindings that cannot, in fact, be deleted from hs-boot files. It would be nice not to see these warnings. Definitions in .hs-boot files must match the definitions in .hs files, but .hs-boot files don't necessarily use or export the same identifiers that the .hs file does.
Running ghc -c A.hs-boot -fwarn-unused-binds
produces warnings for this hs-boot file, regardless of whether the identifiers are exported in the hs file.
{- A.hs-boot -}
{-# OPTIONS_GHC -XTypeFamilies #-} -- to demonstrate associated type warnings
module A(Foo, HasFoo) where
newtype Foo = Foo {unFoo :: Int}
class HasFoo a where
data Foo' a
getFoo :: a -> Foo
For identifiers defined on the RHS of an equal sign or 'where'---namely, data constructors, field names, class methods, and associated types---I suggest silencing unused binding warnings in the boot file. The rationale is that you should be allowed to copy an entire definition into the boot file, and regard a binding as unused only if it appears unused in the .hs file.
See also #3283.
Trac metadata
Trac field | Value |
---|---|
Version | 6.10.4 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |