[Styling] () for a lambda without arguments (Was Space between [] and () in C++ lambdas)

# Ryosuke Niwa (10 days ago)

On Fri, Nov 1, 2019 at 11:53 AM Michael Catanzaro <mcatanzaro at gnome.org>

wrote:

On Fri, Nov 1, 2019 at 11:19 am, Ryosuke Niwa <rniwa at webkit.org> wrote:

Namely, some people write a lambda as: auto x = [] () { }

with a space between [] and () while others would write it as:

auto x = { }

🔧: I omit the () when there are no parameters, as in these examples.

I guess that's another thing we should decide. Should we, or should we not have () when there are no arguments.

I think we usually err on the side of more concise form but I do prefer having () so that it's clear it's a function. Otherwise, it can look like a code block start & end.

  • R. Niwa
Contact us to advertise here
# Zalan Bujtas (10 days ago)

I've been using the short form in the layout code for a while now and never mistaken it for code block start & end. That being said I don't have strong preference on this.

Alan.

# Antti Koivisto (10 days ago)

On Sat, Nov 2, 2019 at 1:38 AM Ryosuke Niwa <rniwa at webkit.org> wrote:

On Fri, Nov 1, 2019 at 11:53 AM Michael Catanzaro <mcatanzaro at gnome.org> wrote:

On Fri, Nov 1, 2019 at 11:19 am, Ryosuke Niwa <rniwa at webkit.org> wrote:

Namely, some people write a lambda as: auto x = [] () { }

with a space between [] and () while others would write it as:

auto x = { }

🔧: I omit the () when there are no parameters, as in these examples.

I guess that's another thing we should decide. Should we, or should we not have () when there are no arguments.

I think this is easily settled by voting via exiting practice. We have 1287 instances of [&] { and 107 instances of & { and &] () { across the whole WebKit.

antti

# Ryosuke Niwa (9 days ago)

On Sat, Nov 2, 2019 at 1:23 AM Antti Koivisto <koivisto at iki.fi> wrote:

On Sat, Nov 2, 2019 at 1:38 AM Ryosuke Niwa <rniwa at webkit.org> wrote:

On Fri, Nov 1, 2019 at 11:53 AM Michael Catanzaro <mcatanzaro at gnome.org> wrote:

On Fri, Nov 1, 2019 at 11:19 am, Ryosuke Niwa <rniwa at webkit.org> wrote:

Namely, some people write a lambda as: auto x = [] () { }

with a space between [] and () while others would write it as:

auto x = { }

🔧: I omit the () when there are no parameters, as in these examples.

I guess that's another thing we should decide. Should we, or should we not have () when there are no arguments.

I think this is easily settled by voting via exiting practice. We have 1287 instances of [&] { and 107 instances of & { and &] () { across the whole WebKit.

That’s good to know. Why don’t we go with the status quo then.

In this case, we do put a space between ] or ) and {, right?

I guess this is also consistent with the way people write objective C blocks: developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html

For JavaScript, this rule probably doesn’t apply because arrow function and regular anonymous function both require ().

  • R. Niwa
# Chris Dumez (9 days ago)

On Nov 2, 2019, at 7:38 PM, Ryosuke Niwa <rniwa at webkit.org> wrote:



On Sat, Nov 2, 2019 at 1:23 AM Antti Koivisto <koivisto at iki.fi> wrote:

On Sat, Nov 2, 2019 at 1:38 AM Ryosuke Niwa <rniwa at webkit.org> wrote:

On Fri, Nov 1, 2019 at 11:53 AM Michael Catanzaro <mcatanzaro at gnome.org> wrote:

On Fri, Nov 1, 2019 at 11:19 am, Ryosuke Niwa <rniwa at webkit.org> wrote:

Namely, some people write a lambda as: auto x = [] () { }

with a space between [] and () while others would write it as:

auto x = { }

🔧: I omit the () when there are no parameters, as in these examples.

I guess that's another thing we should decide. Should we, or should we not have () when there are no arguments.

I think this is easily settled by voting via exiting practice. We have 1287 instances of [&] { and 107 instances of & { and &] () { across the whole WebKit.

That’s good to know. Why don’t we go with the status quo then.

In this case, we do put a space between ] or ) and {, right?

How is this the conclusion from Antti’s comment?

Based on the discussion so far, it thought no space had a slight lead.

# Ryosuke Niwa (9 days ago)
# Alex Christensen (7 days ago)

When the lambda is mutable or has a trailing return type, the () is currently required by the C++ grammar, so we can’t say to always omit (). We could say to always have it, to only have it when necessary, or have no code style guideline. I think we should always have spaces before and after, though.

# Ryosuke Niwa (3 days ago)

Seems like there is a consensus here. Here's a patch to codify it in our code style guidelines: bugs.webkit.org/show_bug.cgi?id=204021

On Mon, Nov 4, 2019 at 8:06 AM Alex Christensen <achristensen at apple.com>

wrote:

Want more features?

Request early access to our private beta of readable email premium.