[llvm-dev] Codifying our Brace rules-

Aaron Ballman via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 16 04:02:37 PDT 2020


On Mon, Jun 15, 2020 at 3:46 PM Keane, Erich via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
>
> Hi all-
>
>
>
> A few weeks ago I noticed that our “omit braces with single line blocks” rule wasn’t written down!  Additionally, as a group on IRC and in review, noticed that the enforcement of this rule has been extremely inconsistent.  We made a first run at codifying our existing practice here: https://reviews.llvm.org/D80947, which was then committed after significant time on llvm-commits.
>
>
>
> I would like to encourage the list via discussion and further reviews/commits to come to a consensus on what we actually MEAN by this rule.  For example, a recent comment points out that :
>
>
>
> If (cond)
>
>   Stmt;
>
> else if (cond)
>
>   Stmt;
>
> else {
>
>   Stmt;
>
>   Stmt;
>
> }
>
>
>
> Should require braces on all of the conditions!  However, we are extraordinarily inconsistent here.  My wish is for us to become more consistent, so I would like us to use this thread to organize our collective thoughts on figuring out what the rule actually SHOULD be, and organizing a handful of commits to the coding standard to make sure it says what we mean.

I'm in the always-use-braces camp, so my preference is that if one of
the branches in the chain requires braces, we should use them for all
branches. I consider comments to count towards whether braces are
required, so:

if (foo)
  // This is bad
  bar();

if (foo) {
  // This is good
  bar();
}

if (foo) {
  bar(); // But I prefer this
}

~Aaron


More information about the llvm-dev mailing list