[PATCH] D35485: [clang-format] Fix comment levels between '}' and PPDirective
Krasimir Georgiev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 18 08:02:40 PDT 2017
krasimir marked 2 inline comments as done.
krasimir added inline comments.
================
Comment at: lib/Format/UnwrappedLineParser.cpp:489
- nextToken(); // Munch the closing brace.
+ nextToken(InitialLevel); // Munch the closing brace.
----------------
djasper wrote:
> 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.
Here is another breaking test in case we change `Line->Level = InitialLevel` to above this line:
```
switch (x) {
default: {
// Do nothing.
}
}
```
gets reformatted as:
```
switch (x) {
default: {
// Do nothing.
}
}
```
================
Comment at: lib/Format/UnwrappedLineParser.cpp:2378
ScopedLineState BlockState(*this, SwitchToPreprocessorLines);
+ if (InitialLevel)
+ Line->Level = *InitialLevel;
----------------
djasper wrote:
> What happens if we always set the Level to 0 here?
If we always set the Level to 0 here, then
```
void f() {
int i;
/* comment */
#define A
}
```
gets indented as
```
void f() {
int i;
/* comment */
#define A
}
```
https://reviews.llvm.org/D35485
More information about the cfe-commits
mailing list