[PATCH] D35485: [clang-format] Fix comment levels between '}' and PPDirective
Daniel Jasper via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 18 07:39:48 PDT 2017
djasper added inline comments.
================
Comment at: lib/Format/UnwrappedLineParser.cpp:2378
ScopedLineState BlockState(*this, SwitchToPreprocessorLines);
+ if (InitialLevel)
+ Line->Level = *InitialLevel;
----------------
What happens if we always set the Level to 0 here?
================
Comment at: lib/Format/UnwrappedLineParser.cpp:489
- nextToken(); // Munch the closing brace.
+ nextToken(InitialLevel); // Munch the closing brace.
----------------
krasimir wrote:
> djasper wrote:
> > What happens if you instead change the Line->Level = InitialLevel; statement from below to before this line? That seems like the more intuitively correct fix.
> This doesn't work since comments before the right brace haven't been emitted yet and would get the wrong level.
So that means this seems to be the interesting case:
void f() {
DoSomething();
// This was a fun function.
}
// Cool macro:
#define A a
Now, both comments are basically read when we are reading the "}", but they should have different indentation levels. I have another suggestion, see below.
================
Comment at: unittests/Format/FormatTestComments.cpp:848
+ "}",
+ format("int f(int i) {\n"
+ " if (true) {\n"
----------------
krasimir wrote:
> djasper wrote:
> > Generally, mess up the code in some way to ensure that it is actually being formatted.
> Messing up doesn't work in this case, because we rely on the original columns of the comment and the previous line. That's why I added a bunch of tests.
I meant *manually* mess up. So add spaces here and there.
https://reviews.llvm.org/D35485
More information about the cfe-commits
mailing list