oleg.smolsky added a comment.

In https://reviews.llvm.org/D52676#1268806, @djasper wrote:

> In https://reviews.llvm.org/D52676#1268748, @oleg.smolsky wrote:
>
> > In https://reviews.llvm.org/D52676#1268706, @djasper wrote:
> >
> > > Ok, I think I agree with both of you to a certain extent, but I also 
> > > think this change as is, is not yet right.
> > >
> > > First, it does too much. The original very first example in this CL is 
> > > actually not produced by clang-format (or if it is, I don't know with 
> > > which flag combination). It is a case where the lambda is the last 
> > > parameter.
> >
> >
> > Right, I cheated and created that example by hand. My apologies for the 
> > confusion. I've just pasted real code that I pumped through `clang-format`. 
> > Please take a look at the updated summary.
> >
> > > Second, I agree that the original behavior is inconsistent in a way that 
> > > we have a special cases for when the lambda is the very first parameter, 
> > > but somehow seem be forgetting about that when it's not the first 
> > > parameter. I'd be ok with "fixing" that (it's not a clear-cut bug, but I 
> > > think the alternative behavior would be cleaner). However, I don't think 
> > > your patch is doing enough there. I think this should be irrespective of 
> > > bin-packing (it's related but not quite the same thing),
> >
> > Also there is a special case for multiple lambdas. It forces line breaks. 
> > That aside, for the single-lambda case, are you suggesting that it is 
> > always "pulled up", irrespective of its place? That would contradict the 
> > direction I am trying to take as I like `BinPackArguments: false` and so 
> > long lamba args go to their own lines. This looks very much in line with 
> > what bin packing is, but not exactly the same. Obviously, I can add a new 
> > option `favor line breaks around multi-line lambda`.
>
>
> I don't think I am. You are right, there is the special case for multi-lambda 
> functions and I think we should have almost the same for single-lambda 
> functions. So, I think I agree with you and am in favor of:
>
>   someFunction(
>       a,
>       [] {
>         // ...
>       },
>       b);
>   
>
> And this is irrespective of BinPacking. I think this is always better and 
> more consistent with what we'd be doing if "a" was not there. The only caveat 
> is that I think with BinPacking true or false, we should keep the more 
> compact formatting if "b" isn't there and the lambda introducer fits entirely 
> on the first line:
>
>   someFunction(a, [] {
>     // ...
>   });


OK, cool, I've generalized the patch and extended the test. This global thing 
also effects other existing test that deal with sub-blocks/lambdas.

>> Could you look at the updated summary (high level) and the new tests I added 
>> (low level) please? Every other test passes, so we have almost the entire 
>> spec. I can add a few cases where an existing snippet is reformatted with 
>> `BinPackArguments: false` too.
> 
> Not sure I am seeing new test cases and I think at least a few cases are 
> missing from the entire spec, e.g. the case above.
> 
> Also, try to reduce the test cases a bit more:
> 
> - They don't need the surrounding functions
> - You can force the lambda to be multi-line with a "//" comment
> - There is no reason to have the lambda be an argument to a member function, 
> a free-standing function works just as well
> 
>   This might seem nit-picky, but in my experience, the more we can reduce the 
> test cases, the easier to read and the less brittle they become.

Makes sense, reduced the extra levels.

>>> ...and it should also apply to multiline strings if 
>>> AlwaysBreakBeforeMultilineStrings is true. It doesn't all have to be done 
>>> in the same patch, but we should have a plan of what we want the end result 
>>> to look like and should be willing to get there.

Oh, yeah, I will look at that next.


Repository:
  rC Clang

https://reviews.llvm.org/D52676



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

Reply via email to