[Bug preprocessor/61638] New: "warning: multi-line comment" unclear and has false positives
zackw at panix dot com
gcc-bugzilla@gcc.gnu.org
Sat Jun 28 14:35:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61638
Bug ID: 61638
Summary: "warning: multi-line comment" unclear and has false
positives
Product: gcc
Version: unknown
Status: UNCONFIRMED
Keywords: diagnostic
Severity: enhancement
Priority: P3
Component: preprocessor
Assignee: unassigned at gcc dot gnu.org
Reporter: zackw at panix dot com
The warning for a // comment continued on the next line by a backslash is
"warning: multi-line comment", which doesn't make a whole lot of sense if you
don't already know that this is a possibility. (Caret diagnostics help, but
the caret is in the wrong place: it points at the //, not the \.)
It also warns when the construct is harmless, e.g. because the next line has
another // comment on it: this naturally happens when someone feels like
drawing a tree
// A
// / \
// B C
This peeves people enough to write snarky comments like this (from
https://code.monotone.ca/p/monotone/source/tree/h:net.venge.monotone/test/unit/tests/graph.cc#L260
):
// This tests the nasty case described in the giant comment above
// get_uncommon_ancestors:
//
// 9
// |\ . Extraneous dots brought to you by the
// 8 \ . Committee to Shut Up the C Preprocessor
// /| \ . (CSUCPP), and viewers like you and me.
// / | |
// (... ASCII art continues ...)
So I would like to suggest the following four improvements:
1) The warning message should be changed to "warning: backslash-newline
continues // comment onto the next line".
2) The caret should be corrected to point to the backslash, not the //.
3) The warning should be suppressed if the next line is blank or contains only
another // comment. (It should *not* be suppressed if the next line is blank
up to a /*, because that genuinely does change the meaning of the code.
4) "warning: backslash and newline separated by space" should not be suppressed
in // comments, because see bug 8270 for a whole bunch of people being very
confused why putting a space after the backslash in their ASCII art doesn't
make it not a backslash-newline. (It should still be suppressed in /*
comments.)
More information about the Gcc-bugs
mailing list