================
Comment at: lib/Format/Format.cpp:701
@@ +700,3 @@
+        for (unsigned i = 0; i < MergedLines && I + i + 1 != E; ++i)
+          I[i + 1]->First->MustBreakBefore = true;
+        MergedLines = 0;
----------------
Thinking some more about this, this is not enough. We must not modify the lines 
here as this method is potentially called many times for the same set of lines 
if they are children (i.e. in a nested block) of other lines. I cannot easily 
come up with a good example of when you'd have a constructor inside a nested 
block (e.g. DEBUG({..})), but I am sure somebody will.

So, we would need to guard this on DryRun, but this would (a) be horribly 
convoluted and (b) the calculation would be wrong (dryrun-mode and 
non-dryrun-mode would give a different penalty for the same solution). I will 
probably even harder to come up with an example of this, but I'd rather avoid 
it altogether.

I have sent a different approach in http://llvm-reviews.chandlerc.com/D2467. 
Please let me know what you think and especially whether I am missing something 
(I am quite confused with this entire back and forth on when to merge lines...).



http://llvm-reviews.chandlerc.com/D2455
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to