[PATCH] D90949: [clang-format] avoid introducing multiline comments
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 6 08:59:51 PST 2020
sammccall accepted this revision.
sammccall added a comment.
This revision is now accepted and ready to land.
One concern about looping, otherwise just style nits.
================
Comment at: clang/lib/Format/BreakableToken.cpp:104
static const auto kNumberedListRegexp = llvm::Regex("^[1-9][0-9]?\\.");
while (SpaceOffset != StringRef::npos) {
+ // In C++ with the -Werror=comment option, having multiline comments (
----------------
Can you add a high-level comment to this loop?
I guess the idea is "Some spaces are unacceptable to break on, rewind past them."
================
Comment at: clang/lib/Format/BreakableToken.cpp:105
while (SpaceOffset != StringRef::npos) {
+ // In C++ with the -Werror=comment option, having multiline comments (
+ // two consecutive comment lines, the first ending in `\`) is an
----------------
The warning is worth mentioning, but fundamentally we have the warning because such code is confusing, and we shouldn't produce confusing code.
maybe:
```
// If a line-comment ends with `\`, the next line continues the comment,
// whether or not it starts with `//`. This is confusing and triggers -Wcomment.
// Avoid introducing multiline comments by not allowing a break after '\'.
```
================
Comment at: clang/lib/Format/BreakableToken.cpp:109
+ // after '\'.
+ if (Style.isCpp()) {
+ StringRef::size_type LastNonBlank =
----------------
Do we really want to predicate this on isCpp()? `//` comments are allowed by C99.
Even if the warning only applies to C++ for some reason, the reasons for confusion do not.
================
Comment at: clang/lib/Format/BreakableToken.cpp:125
else
break;
}
----------------
doesn't this mean that we won't loop? if Text ends with "blah \ \" then you'll split between "blah" and the first "\"?
I guess this could be structured:
```
while () {
if (special case 1) {
// adjust pos
continue;
}
if (special case 2) {
// adjust pos
continue;
}
break;
}
```
(This is equivalent to the old if/elseif/break which is too hard to add complex conditions to)
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D90949/new/
https://reviews.llvm.org/D90949
More information about the cfe-commits
mailing list