public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/95659] New: Inconsistent error message in "default argument missing for parameter"
@ 2020-06-12 17:32 haoxintu at gmail dot com
  2020-06-18 11:34 ` [Bug c++/95659] " redi at gcc dot gnu.org
  2024-05-09  9:09 ` redi at gcc dot gnu.org
  0 siblings, 2 replies; 3+ messages in thread
From: haoxintu at gmail dot com @ 2020-06-12 17:32 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95659

            Bug ID: 95659
           Summary: Inconsistent error message in "default argument
                    missing for parameter"
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: haoxintu at gmail dot com
  Target Milestone: ---

$cat bug.cc
int a;
long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){ }
long  foo2 ( void  = a, double  param2){ }

In gcc-trunk
$g++-trunk -w -c -std=c++14 bug.cc 
bug.cc:2:41: error: cannot declare a parameter with ‘decltype(auto)’
    2 | long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){ }
      |                                         ^~~~~~~~~~~~~~~
bug.cc:2:14: error: invalid use of type ‘void’ in parameter declaration
    2 | long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){ }
      |              ^~~~~~~~~
bug.cc:3:14: error: invalid use of type ‘void’ in parameter declaration
    3 | long  foo2 ( void  = a, double  param2){ }
      |              ^~~~~~~~~
bug.cc:3:33: error: default argument missing for parameter 2 of ‘long int
foo2(<type error>, double)’
    3 | long  foo2 ( void  = a, double  param2){ }
      |                         ~~~~~~~~^~~~~~
bug.cc:3:14: note: ...following parameter 1 which has a default argument
    3 | long  foo2 ( void  = a, double  param2){ }
      |              ^~~~~~~~~

GCC-trunk misses the "default argument missing for parameter" error message in
function "foo1()" but gives the message in function "foo2()".

In other GCC versions, they have consitent results, for example in GCC-10
$g++-10 -w -c -std=c++14 bug.cc 
bug.cc:2:41: error: cannot declare a parameter with ‘decltype(auto)’
    2 | long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){ }
      |                                         ^~~~~~~~~~~~~~~
bug.cc:2:14: error: invalid use of type ‘void’ in parameter declaration
    2 | long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){ }
      |              ^~~~~~~~~
bug.cc:2:33: error: default argument missing for parameter 2 of ‘long int
foo1(<type error>, double)’
    2 | long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){ }
      |                         ~~~~~~~~^~~~~~
bug.cc:2:14: note: ...following parameter 1 which has a default argument
    2 | long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){ }
      |              ^~~~~~~~~
bug.cc:3:14: error: invalid use of type ‘void’ in parameter declaration
    3 | long  foo2 ( void  = a, double  param2){ }
      |              ^~~~~~~~~
bug.cc:3:33: error: default argument missing for parameter 2 of ‘long int
foo2(<type error>, double)’
    3 | long  foo2 ( void  = a, double  param2){ }
      |                         ~~~~~~~~^~~~~~
bug.cc:3:14: note: ...following parameter 1 which has a default argument
    3 | long  foo2 ( void  = a, double  param2){ }
      |              ^~~~~~~~~

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/95659] Inconsistent error message in "default argument missing for parameter"
  2020-06-12 17:32 [Bug c++/95659] New: Inconsistent error message in "default argument missing for parameter" haoxintu at gmail dot com
@ 2020-06-18 11:34 ` redi at gcc dot gnu.org
  2024-05-09  9:09 ` redi at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: redi at gcc dot gnu.org @ 2020-06-18 11:34 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95659

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Haoxin Tu from comment #0)
> $cat bug.cc
> int a;
> long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){ }
> long  foo2 ( void  = a, double  param2){ }
> 
> In gcc-trunk
> $g++-trunk -w -c -std=c++14 bug.cc 
> bug.cc:2:41: error: cannot declare a parameter with ‘decltype(auto)’
>     2 | long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){
> }
>       |                                         ^~~~~~~~~~~~~~~
> bug.cc:2:14: error: invalid use of type ‘void’ in parameter declaration
>     2 | long  foo1 ( void  = a, double  param2 ,decltype (auto) param3 = a){
> }
>       |              ^~~~~~~~~

The first two errors are correct, the function declaration is complete garbage
and these errors correctly identify some of the problems.

Whether it *also* notices another error in this garbage doesn't really matter.
You need to fix this nonsense before the code can be compiled anyway.

The general rule of thumb is always to start by fixing the first errors,
because they might be causing the later ones. If you fix those two errors, then
G++ will  tell you about the next problem.

It's not really helpful to keep pointing out that if you randomly generate
complete garbage then GCC gets confused.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/95659] Inconsistent error message in "default argument missing for parameter"
  2020-06-12 17:32 [Bug c++/95659] New: Inconsistent error message in "default argument missing for parameter" haoxintu at gmail dot com
  2020-06-18 11:34 ` [Bug c++/95659] " redi at gcc dot gnu.org
@ 2024-05-09  9:09 ` redi at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: redi at gcc dot gnu.org @ 2024-05-09  9:09 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95659

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |minor

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-05-09  9:09 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-12 17:32 [Bug c++/95659] New: Inconsistent error message in "default argument missing for parameter" haoxintu at gmail dot com
2020-06-18 11:34 ` [Bug c++/95659] " redi at gcc dot gnu.org
2024-05-09  9:09 ` redi at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).