On 5/19/21 3:55 PM, Jonathan Wakely wrote:
On 19/05/21 13:26 -0400, Jason Merrill wrote:
On 5/19/21 12:46 PM, Jonathan Wakely wrote:
On 19/05/21 17:39 +0100, Jonathan Wakely wrote:
Jakub pointed out I'd forgotten the spaces before the opening parens
for function calls. The attached patch should fix all those, with no
other changes.

Tested x86_64-linux. OK for trunk?

Jakub also pointed out we already have some similar diagnostics for
C++23, but I missed them as they say "only optional with" not "only
available with".

I'm testing the incremental change in the attached patch which also
adds -Wc++23-extensions, and I'll resend the full patch after that
finishes.

  if (omitted_parms_loc && lambda_specs.any_specifiers_p)
    {
-      pedwarn (omitted_parms_loc, 0,
+      pedwarn (omitted_parms_loc, OPT_Wc__23_extensions,

You probably want to change

 else if (cxx_dialect < cxx23)
   omitted_parms_loc = cp_lexer_peek_token (parser->lexer)->location;

To use warn_about_dialect_p.

Ah yes.

And just above that there's another pedwarn about a C++14 feature
being used:


      /* Default arguments shall not be specified in the
      parameter-declaration-clause of a lambda-declarator.  */
      if (cxx_dialect < cxx14)
     for (tree t = param_list; t; t = TREE_CHAIN (t))
       if (TREE_PURPOSE (t) && DECL_P (TREE_VALUE (t)))
         pedwarn (DECL_SOURCE_LOCATION (TREE_VALUE (t)), OPT_Wpedantic,
              "default argument specified for lambda parameter");


I didn't notice that one initially. That should also use
warn_about_dialect_p and OPT_Wc__14_extensions.

Indeed.

Should I change the message to say "init capture" rather than
"default argument"?

No, this is about e.g. [](int = 42){}

Jason

Reply via email to