https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124060
Bug ID: 124060
Summary: -Werror=complain-wrong-lang doesn't work for "... is
not valid for C++"
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: driver
Assignee: unassigned at gcc dot gnu.org
Reporter: sjames at gcc dot gnu.org
Target Milestone: ---
$ touch /tmp/a.cxx
$ g++ -Werror=unterminated-string-initialization /tmp/a.cxx -c
cc1plus: warning: ‘-Werror=’ argument
‘-Werror=unterminated-string-initialization’ is not valid for C++
And no relevant options help, unfortunately:
$ g++ -Werror=unterminated-string-initialization /tmp/a.cxx
-Werror=complain-wrong-lang -Wfatal-errors -Werror -c
cc1plus: warning: ‘-Werror=’ argument
‘-Werror=unterminated-string-initialization’ is not valid for C++
This is from `complain_wrong_lang`:
```
/* Complain that switch DECODED does not apply to this front end (mask
LANG_MASK). */
static void
complain_wrong_lang (const struct cl_decoded_option *decoded,
unsigned int lang_mask)
{
...
else if (ok_langs[0] != '\0')
/* Eventually this should become a hard error IMO. */
warning (0, "command-line option %qs is valid for %s but not for %s",
text, ok_langs, bad_lang);
else
/* Happens for -Werror=warning_name. */
warning (0, "%<-Werror=%> argument %qs is not valid for %s",
text, bad_lang);
...
}
```