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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits