Warning suppression pragmas

Ben Gamari ben at smart-cactus.org
Thu Dec 3 12:16:51 UTC 2015

Эдгар Жаворонков <edzhavoronkov at gmail.com> writes:

> Hello devs!
> I am trying to implement some kind of local warnings suppresion and i need
> some help.
> I want to use a pragma to mark functions so compiler won't throw warnings
> from them. I defined my pragma in lexer, parser and added type signature in
> HsBinds.hs. And i am stuck. I don't know what to do. What should i consider
> doing further?
I think it would be helpful to focus on further elaborating the
specification before we move into the implementation. There are still a
number of open questions about the design that the wiki page doesn't yet

For instance, you should explicitly specify,

 * What are the identifiers that appear after the `SUPPRESS` token?

 * What exactly does the pragma apply to? For instance, if I have a case

       hello :: Int -> Int
       {-# SUPPRESS some-warning #-}
       helloAgain :: Type -> AnotherType
       hello = (+1)
       helloAgain = error "42"

   or even just
       hello = (+1)
       {-# SUPPRESS another-warning #-}
       helloAgain = error "oops"

   What do you expect to happen? The behavior of the pragma in both of
   these cases should be unambiguously stated in the specification.

 * An concrete use-case motivating the change (preferably with examples
   showing how the proposed syntax would address the motivation)

I know this sounds repetitive, but the act of writing down a proposal 
will help you immensely when you do move on to implementing your ideas.

Thanks for your persistence.


- Ben

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 472 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20151203/4c4877a0/attachment.sig>

More information about the ghc-devs mailing list