djasper added inline comments.

================
Comment at: lib/Format/UnwrappedLineParser.cpp:489
 
-  nextToken(); // Munch the closing brace.
+  nextToken(InitialLevel); // Munch the closing brace.
 
----------------
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.


https://reviews.llvm.org/D35485



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to