On 14/01/2008, Jonathan Wakely <[EMAIL PROTECTED]> wrote:
> On 13/01/2008, Jonathan Wakely wrote:
> >
> > I think all others should change to permerrors.
>
> I only meant all others in cp/decl.c of course - here are the remaining files.
> Again I've only listed the ones that should remain as pedwarns and
> other special cases - most change to permerrors.
>

Thanks for doing this!

> Another interesting one.  Variadic templates work in C++98 mode and
> are used internally, but currently you have to say -fpermissive to use
> them in user code. That flag is *usually* needed for
> backward-compatibility, not enabling *future* extensions.

That is because we didn't have permerror and the semantics of
fpermissive were not clear. Now it is evident that this should be a
pedwarn. Wow, you found probably the best example of why the current
C++ FE behaviour is confusing.

> So is support for variadic templates in -std=gnu98 mode an official
> extension, or a detail not-for-public-consumption?

Well, right now you can use it if you use fpermissive, so if it wasn't
for public-consumption, using pedwarn instead of error was not the
right thing in the first place. So pedwarn.

> I think for consistency with the new proposed behaviour it should
> check flag_permissive, instead of !flag_pedantic_errors, do you agree?
>

Yes, this is the type of thing I am looking when reviewing your
suggestions, since they are a potential source of bugs. In my patch I
changed a few.

> In cp/typeck.c the pedwarns guarded by pedantic should stay as pedwarns.
> on line 5356 there is:
>       if (pedantic)
>         /* Only issue a warning, as we have always supported this
>            where possible, and it is necessary in some cases.  DR 195
>            addresses this issue, but as of 2004/10/26 is still in
>            drafting.  */
>         warning (0, "ISO C++ forbids casting between pointer-to-function and
> pointer-to-object");
>
> This could switch to a pedwarn, since that will still be a warning
> under the permerror proposal. That would mean it can be turned into a
> fatal error with -pedantic-errors instead of -Werror, which would be
> consistent with other warnings that are only enabled by -pedantic.
> I'm not sure how "conditionally-supported behaviour" should interact
> with -pedantic-errors so let's leave as a warning for now.

This is another example of trying to workaround the wrong default of
pedwarns. This should be a pedwarn. The reason why is a warning is
that pedantic-errors was active by default and that didn't make sense.
We are changing this, so we don't need this hack anymore.

> Is that all of them?  Would you prefer a patch to make the changes or
> are you going to go through them yourself anyway?

I agree with all your other suggestions. I will try to go through them
in the following days and submit a follow-up patch to the ones already
submitted.

Many thanks! That was impressive.

Manuel.

Reply via email to