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: > > > 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. > > } > > } > > ``` > I think we can fix all of these cases by doing: > > flushComments(isOnNewLine(*FormatTok)); > Line->Level = InitialLevel; > nextToken(); // Munch the closing brace. > > (so add the first two lines here, remove Line->Level = InitialLevel; below. Cool! Thanks! https://reviews.llvm.org/D35485 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits