This proposal is a good start, but it needs more fleshing out. - What scopes are allowed to suppress over? For example, is it possible to suppress warnings for scopes other than a function (for example, within a case expression)? What about type declarations? Local declarations? In a type signature?
- Is there a way to control what warnings are suppressed? Presumably, a user would like to suppress only certain warnings in certain places. - Your proposal contains motivation and examples. These are necessary parts of a proposal. But we also need a full specification of the feature, describing precisely the syntax (where, exactly, `SUPPRESS` is allowed) and semantics. I hope this feedback is helpful! Richard On Dec 14, 2015, at 8:52 AM, Эдгар Жаворонков <[email protected]> wrote: > Hi devs! > > I edited wiki page [1] with my proposal about more than week ago. The main > idea is that we mark functins with pragma and filter all warnings that it > will throw. Although it is the question of bad design, i think users, who > have to support old libraries will find this helpful. > > I don't know about suppressing specific kinds of warnings. I think, that it > would be more precise to filter them in one place instead of many. > > Can someone review it? Sorry for bothering, if any > > [1] - https://ghc.haskell.org/trac/ghc/wiki/Design/LocalWarningPragmas > > --- > С уважением, > Жаворонков Эдгар > > Best regards, > Edgar A. Zhavoronkov > > 2015-12-03 15:16 GMT+03:00 Ben Gamari <[email protected]>: > Эдгар Жаворонков <[email protected]> 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 > address. > > 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 > like, > > 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. > > Cheers, > > - Ben > > > _______________________________________________ > ghc-devs mailing list > [email protected] > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list [email protected] http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
