[ghc-steering-committee] -Wmissing-language (Was: Module qualified syntax)

Simon Marlow marlowsd at gmail.com
Fri Mar 8 19:03:16 UTC 2019


On Fri, 8 Mar 2019 at 17:52, Joachim Breitner <mail at joachim-breitner.de>
wrote:

> Hi,
>
> let’s see. Currently, we issue an *error*
>
>    error: Illegal lambda-case (use -XLambdaCase)
>
> your idea would turn that into a warning
>
>    warning [-Wmissing-LambdaCase] : Illegal lambda-case (use -XLambdaCase)
>
> It is odd that now -Wno-missing-LambdaCase and -XLambdaCase are
> essentially the same.
>
>
>
> But how about we add a single warning category:
>
>    warning [-Wmissing-langauge] : Illegal lambda-case (use -XLambdaCase)
>
> We could even leave the default as
>
>    -Werror=missing-langauge
>
> matching existing behavior. People who want to play around more liberally
> can use
>
>    -Wwarn=missing-language
>
> and get notified which extensions they might want (maybe a good default
> for ghci?), and those who really don't care can use
>
>    -Wno-missing-language
>

So {-# OPTIONS_GHC -Wno-missing-language #-} at the top of the file would
essentially exempt the file from having to specify LANGUAGE pragmas for
some the extensions that it uses, which is the same as saying that some
extensions don't need LANGUAGE pragmas. I think that would be a shame,
because we lose all the nice properties that we get from being strict about
requiring LANGUAGE pragmas for extensions.  Even -Wwarn=missing-language
would be dangerous in the same sense.

I'm not a fan of this.  I like warnings for unused extension pragmas, but
not for missing pragmas.

Incidentally, having extensions that we add to later, like
FlexiableImports, is also somewhat dodgy because the same extension pragma
means different things depending on which compiler version you're using.
Perhaps being completely strict about this is not feasible in general (we
make small changes to extensions a lot, and it would be silly to make a new
flag each time), but it's an area we should be careful about. If we add to
FlexibleImports, and you're using an older version of the compiler that
doesn't support whatever addition we made to it, we'll get a parse error
instead of a "unsupported extension" diagnostic.

Cheers
Simon



>
>
> And then the question is: Do this only only for benign extensions? Only
> for those where we can easily issue warnings? For all?
>
>
> Not sure how useful it is, but it might be.
>
> Cheers,
> Joachim
>
>
> Am Freitag, den 08.03.2019, 12:37 -0500 schrieb Richard Eisenberg:
> > Like many on this list, I've never been bothered by the existing syntax.
> But I am swayed by experienced folks who very much want this.
> >
> > I like Vitaly's idea of opening the door to future changes. I think
> there is more improvement to be found in our import/export syntax than just
> this one change, and so if we have a generic enough language extension, it
> allows us to consider smallish syntax changes without new language
> extensions in the future. `FlexibleImports` is as good a name as any, I
> think.
> >
> > As to the annoyance about adding language extensions: what if we issue a
> *warning*, not an error, when the user writes a program without specifying
> the extension? This warning would be on by default (but could, naturally,
> be suppressed). I'd be comfortable with expanding this treatment by
> identifying a set of "benign" extensions. Each benign extension would have
> an accompanying warning, e.g., -Wmissing-FlexibleInstances. These would all
> be on by default, suppressed with either, e.g., -XFlexibleInstances or
> -Wno-missing-FlexibleInstances. (Interestingly, the semantics of
> -XFlexibleInstances and -Wno-missing-FlexibleInstances is identical. Hmm.)
> >
> > Definition: A *benign* extension is one that, when enabled, strictly
> increases the set of programs GHC accepts. It never changes the meaning of
> any program that was accepted without the extension.
> >
> > I don't feel strongly on this warning idea, but I wanted to throw it out
> there.
> >
> > Richard
> >
> > > On Mar 8, 2019, at 11:59 AM, Iavor Diatchki <iavor.diatchki at gmail.com>
> wrote:
> > >
> > > This never bothered me personally, but I have no strong feeling about
> it either way.
> > >
> > > On Fri, Mar 8, 2019 at 6:30 AM Vitaly Bragilevsky <bravit111 at gmail.com>
> wrote:
> > > > Hello,
> > > >
> > > > I am in favor of this proposal. As for the name of the extension, my
> suggestion is 'FlexibleImports', then we could allow even more flexibility
> in import declarations in the future. Anyway, I am also ok with the current
> versions (although the shorter the better).
> > > >
> > > > Regards,
> > > > Vitaly
> > > >
> > > > On Fri, Mar 8, 2019 at 11:32 AM Simon Marlow <marlowsd at gmail.com>
> wrote:
> > > > > Proposal #190 is about accepting the syntax
> > > > >
> > > > >   import A.B.C qualified
> > > > >
> > > > > instead of (or in addition to) the existing syntax
> > > > >
> > > > >   import qualified A.B.C
> > > > >
> > > > > I think it's widely accepted that the original syntax was a
> mistake. I don't need to rehash the rationale for the change here, iit's
> described pretty well in the proposal and elaborated in the discussion.
> > > > >
> > > > > The question for us is really: is it worth changing? There are
> costs:
> > > > > - A new extension flag, which itself has costs (extra
> documentation, a new thing that people need to understand)
> > > > > - new code using the extension doesn't compile with older compilers
> > > > > - all the existing code in the world uses the old convention
> > > > > - etc.
> > > > >
> > > > > Reasonable people can differ here. The discussion on the proposal
> has representatives from both sides of the camp.
> > > > >
> > > > > Personally, the current syntax annoys me almost every day. It's
> already a small cost on everyone, and I think we need to move forwards even
> if there are costs in migrating. So, I'm going to recommend that we accept
> this proposal.
> > > > >
> > > > > We might want to reconsider the name of the extension:
> QualifiedImportsPostpositive seems like a mouthful. Perhaps
> ImportQualifiedPost is enough?
> > > > >
> > > > > Cheers
> > > > > Simon
> > > > >
> > > > > On Mon, 4 Mar 2019 at 12:09, Joachim Breitner <
> mail at joachim-breitner.de> wrote:
> > > > > > Dear Committee,
> > > > > >
> > > > > > this is your secretary speaking:
> > > > > >
> > > > > > Module qualified syntax
> > > > > > has been proposed by Shayne Fletcher
> > > > > > https://github.com/ghc-proposals/ghc-proposals/pull/190
> > > > > >
> https://github.com/shayne-fletcher-da/ghc-proposals/blob/module-qualified-syntax/proposals/0000-module-qualified-syntax.rst
> > > > > >
> > > > > > Simon Marlow has already volunteered to shepherd.
> > > > > >
> > > > > > Please reach consensus as described in
> > > > > > https://github.com/ghc-proposals/ghc-proposals#committee-process
> > > > > > I suggest you make a recommendation, in a new e-mail thread with
> the
> > > > > > proposal number in the subject, about the decision, maybe point
> out
> > > > > > debatable points, and assume that anyone who stays quiet agrees
> with
> > > > > > you.
> > > > > >
> > > > > > Thanks,
> > > > > > Joachim
> > > > > > --
> > > > > > Joachim Breitner
> > > > > >   mail at joachim-breitner.de
> > > > > >   http://www.joachim-breitner.de/
> > > > > >
> > > > > > _______________________________________________
> > > > > > ghc-steering-committee mailing list
> > > > > > ghc-steering-committee at haskell.org
> > > > > >
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> > > > >
> > > > > _______________________________________________
> > > > > ghc-steering-committee mailing list
> > > > > ghc-steering-committee at haskell.org
> > > > >
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> > > >
> > > > _______________________________________________
> > > > ghc-steering-committee mailing list
> > > > ghc-steering-committee at haskell.org
> > > >
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> > >
> > > _______________________________________________
> > > ghc-steering-committee mailing list
> > > ghc-steering-committee at haskell.org
> > >
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> >
> > _______________________________________________
> > ghc-steering-committee mailing list
> > ghc-steering-committee at haskell.org
> > https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> --
> Joachim Breitner
>   mail at joachim-breitner.de
>   http://www.joachim-breitner.de/
>
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20190308/66da8416/attachment.html>


More information about the ghc-steering-committee mailing list