Hi Joseph,

On Mon, Sep 15, 2025 at 07:07:14PM +0000, Joseph Myers wrote:
> On Mon, 15 Sep 2025, Alejandro Colomar wrote:
> 
> >     // Whatever, but at least should be self-consistent:
> >     void l(void;);       // ok
> >     void m(void; void);  // error: ‘void’ must be the only parameter and 
> > unnamed
> >     void n(void; int n); // error: parameter ‘({anonymous})’ has just a 
> > forward declaration
> > 
> > Regardless of whether we want l(), m(), and n() to be accepted, they
> > should either be all accepted or none accepted.  I think all should be
> > accepted, but you might convince me otherwise.
> 
> I think they should all be rejected.  That is, all parameter forward 
> declarations must declare a parameter, by name, that appears in a 
> following list of parameter declarations.  See also bug 23144 regarding 
> forward declarations being wrongly accepted with no following declarations 
> of parameters at all.

Ahhh, thanks!  That bug explainst the inconsistency I experienced with
this.

What's your opinion about 'void f(; int x);'?  Is that okay?

That is, ignoring the pre-existing bug that doesn't diagnose line 2,
would it be okay to you if we lift the errors from lines 4 and 5, as
below?

        alx@debian:~/tmp$ cat void_fwd.c | nl
             1  void f(      void);
             2  void f(void;     );
             3  void f(void; void);
             4  void f(    ; void);
             5  void f(    ;     );
        alx@debian:~/tmp$ /opt/local/gnu/gcc/fwd2/bin/gcc void_fwd.c 
        void_fwd.c:3:14: error: ‘void’ must be the only parameter and unnamed
            3 | void f(void; void);
              |              ^~~~
        void_fwd.c:3:8: error: parameter ‘({anonymous})’ has just a forward 
declaration
            3 | void f(void; void);
              |        ^~~~

> I think it would be best to separate fixing existing bugs relating to 
> things that are wrongly accepted and not meaningful for the existing 
> extension, from any changes that add new features or new diagnostics for 
> things that are clearly meant to be valid with the existing extension.

Sure.  I discuss them together, as they're related, but I certainly
intend to provide separate patches for every logically different issue.


Cheers,
Alex

-- 
<https://www.alejandro-colomar.es>
Use port 80 (that is, <...:80/>).

Attachment: signature.asc
Description: PGP signature

Reply via email to