<div dir="ltr"><div>To decrease the number of false-positives, you could emit the warning only if <i><b>exactly one</b></i> comma was missing.</div><div><br></div><div>    const char *likely_a_bug[] = { "a", "b", "c" "d", "e", "f", "g", "h", "i" };</div><div>    const char *likely_not_a_bug[] = { "a", "b" "c", "d" "e", "f" "g" };</div><div><div>    const char *oops_still_a_bug[] = { "a", "b", "c" "d", "e", "f" "g", "h", "i" };</div><div></div></div><div><br></div><div>However, as `oops_still_a_bug` shows, that tactic would also decrease the number of true positives, and it would confuse the end-user, for whom predictability is key.</div><div><br></div><div>I still think it would be appropriate to <b><i>stop issuing the warning for structs</i></b>, though.</div><div>Here's my struct example from below in Godbolt: <a href="https://godbolt.org/z/6jjv6a">https://godbolt.org/z/6jjv6a</a><br></div><div>Speaking of predictability, I don't understand why `struct Y` avoids the warning whereas `struct X` hits it.</div><div>After removing the warning for structs, neither `X` nor `Y` should hit it, and that should fix pretty much all the Firefox hits as I understand them.</div><div><br></div><div>–Arthur</div><div><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 10, 2020 at 5:51 PM Dávid Bolvanský <<a href="mailto:david.bolvansky@gmail.com">david.bolvansky@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Something like this:<br>
  const char *Sources[] = {<br>
    "// \\tparam aaa Bbb\n",<br>
    "// \\tparam\n"<br>
    "//     aaa Bbb\n",<br>
    "// \\tparam \n"<br>
    "//     aaa Bbb\n",<br>
    "// \\tparam aaa\n"<br>
    "// Bbb\n"<br>
  };<br>
<br>
annoys me :/ Any idea/heuristic how to avoid warning here?<br>
<br>
po 10. 8. 2020 o 23:48 Dávid Bolvanský <<a href="mailto:david.bolvansky@gmail.com" target="_blank">david.bolvansky@gmail.com</a>> napísal(a):<br>
><br>
> For your cases, we currently do not warn. If possible, fetch the<br>
> latest Clang trunk and re-evaluate on Firefox.<br>
><br>
> po 10. 8. 2020 o 23:46 Arthur O'Dwyer <<a href="mailto:arthur.j.odwyer@gmail.com" target="_blank">arthur.j.odwyer@gmail.com</a>> napísal(a):<br>
> ><br>
> > It looks to me as if all of the false-positives so far have been not arrays but structs.<br>
> ><br>
> > struct X { int a; const char *b; int c; };<br>
> > X x = { 41, "forty" "two", 43 };  // false-positive here<br>
> ><br>
> > The distinguishing feature here is that if you did insert a comma as suggested by the compiler, then the result would no longer type-check.<br>
> > X x = { 41, "forty", "two", 43 };  // this is ill-formed because "two" is not a valid initializer for `int c`<br>
> ><br>
> > Dávid, can you use this in some way?<br>
> > IMHO it would be appropriate to just turn the warning off if the entity being initialized is a struct — leave the warning enabled only for initializers of arrays.<br>
> ><br>
> > my $.02,<br>
> > –Arthur<br>
> ><br>
> ><br>
> > On Mon, Aug 10, 2020 at 5:38 PM Dávid Bolvanský <<a href="mailto:david.bolvansky@gmail.com" target="_blank">david.bolvansky@gmail.com</a>> wrote:<br>
> >><br>
> >> I moved it to -Wextra due to false positives.<br>
> >><br>
> >> > Should there be some exception for line length<br>
> >><br>
> >> Yeah, but sure how to define the threshold or so. :/<br>
> >><br>
> >> po 10. 8. 2020 o 23:21 dmajor via Phabricator<br>
> >> <<a href="mailto:reviews@reviews.llvm.org" target="_blank">reviews@reviews.llvm.org</a>> napísal(a):<br>
> >> ><br>
> >> > dmajor added a comment.<br>
> >> ><br>
> >> > In the Firefox repo this warning is firing on a number of strings that were broken up by clang-format (or humans) for line length, for example <a href="https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/security/certverifier/ExtendedValidation.cpp#176-178" rel="noreferrer" target="_blank">https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/security/certverifier/ExtendedValidation.cpp#176-178</a> or <a href="https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/xpcom/tests/gtest/TestEscape.cpp#103-104" rel="noreferrer" target="_blank">https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/xpcom/tests/gtest/TestEscape.cpp#103-104</a> or <a href="https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/js/src/jsapi-tests/testXDR.cpp#115" rel="noreferrer" target="_blank">https://searchfox.org/mozilla-central/rev/ab81b8552f4aa9696a2524f97fdfeb59d4dc31c1/js/src/jsapi-tests/testXDR.cpp#115</a>.<br>
> >> ><br>
> >> > Do you consider these to be false positives in your view? Should there be some exception for line length, perhaps?<br>
> >> ><br>
> >> ><br>
> >> > Repository:<br>
> >> >   rG LLVM Github Monorepo<br>
> >> ><br>
> >> > CHANGES SINCE LAST ACTION<br>
> >> >   <a href="https://reviews.llvm.org/D85545/new/" rel="noreferrer" target="_blank">https://reviews.llvm.org/D85545/new/</a><br>
> >> ><br>
> >> > <a href="https://reviews.llvm.org/D85545" rel="noreferrer" target="_blank">https://reviews.llvm.org/D85545</a><br>
> >> ><br>
</blockquote></div></div>