clang-format formats initializer_list passed to function oddly

I have the following bit of code (or something very similar):

int main() {
add_thingie({{Thingie1::ID(), (ThingieHandler)[=](const Object& o) { do_something1(o); }}, {Thingie2::ID(), (ThingieHandler)[=](const Object& o) { do_something2(o); }}});
return 0;
}

If I run it through clang-format (6.0.0), I get the following output.

C:\clang-format_example>clang-format example_bad.cpp
int main() {
add_thingie({{Thingie1::ID(), (ThingieHandler)[=](const Object& o) { do_something1(o);
}
}
, {
Thingie2::ID(), (ThingieHandler)[=](const Object &o) { do_something2(o); }
}
});
return 0;
}

Interestingly, if I remove the C-style cast, it produces something sensible.

C:\clang-format_example>clang-format example_good.cpp
int main() {
add_thingie({{Thingie1::ID(), [=](const Object &o) { do_something1(o); }},
{Thingie2::ID(), [=](const Object &o) { do_something2(o); }}});
return 0;
}

I could not find any set of options that does something remotely sensible to the original example. Am I missing something?

Turing

This looks like a bug (or bugs) in LibFormat. Here is one reduced case:

Works:

Call({a, = { something1(o); }, b});

Broken:

namespace ns{
void F() {
Call({a, (Cast)= { something1(o); }, b});
}
}

The second case counts braces incorrectly.

And even further reduced case:

void F() {
Call({(Cast)[] { f(); }});
}

Filed so that this does not get lost in the mail traffic.