<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/57128>57128</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Improve clang-tidy cppcoreguidelines-init-variables to not warn when the variable is initialized on all branches
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          sean-mcmanus
      </td>
    </tr>
</table>

<pre>
    Use clang-tidy (14.0) on code like
```cpp
bool mmm(bool bb1, bool bb3) {
    bool bb2;
    if (bb1) {
        bb2 = bb3;
    } else {
        bb2 = !bb3;
    }
    return bb2;
}
```
with check cppcoreguidelines-init-variables . (I could provide a command line if you need one, but I assume it's not needed).

For reference, the TypeScript compiler is able to handle this, i.e. no error occurs with the code below

```TypeScript 

function mmm(bb1: boolean, bb3: boolean) : boolean{
    let bb2: boolean;
    if (bb1) {
        bb2 = bb3;
    } else {
        bb2 = !bb3;
    }
    return bb2;
}
```
, but it appears if one of the branches omits the initialization:
![image](https://user-images.githubusercontent.com/19859882/184457755-1b23c6f2-1ecf-4829-9444-74ec2bb00869.png)

If this is hard to determine 100%, maybe the common cases could be handled?

The workaround is to initialize on the declaration line.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVVM2OmzAQfhq4WCAwEODAYbdRpJzbPoBthuCuwcg2G6VP37FJsmzVqudGUWJ7_uf7Zrjub913C0QoNl8SJ_sbiWiTl2kW0ZbomQjdA1HyDaLsGGUv0SHbvmJZtheutSLTNKFZOHKeR_QLuZ8L7yaqXzddgp-7gEbF7lEOPmww_U09mHBKouIY3O2tovpIQGH2f7WIaP4Ho4-LAbea-VM6T_mz1O16lW4kYgTxRrB2oQ1cVtmDkjPYRM7SJe_MSMYVWJL6as7Yu1X1ZDH6HRUJw_s0sbkn3saXfNMrmQF67DOEnq2OnAmzdp1Q7iJaWzJrF3Sgx9ak98zC70kbzH8AA7MI5m4E8u22wFdh5OJ8tEUqMERa4tMiTpMRw_vTKK23kCmkGIGAMehMC7EaS0Kh3leAnoPS133YZ1t2ofbyYZ2Fk8icOycQ0-IloA5sDlV6QHYvCPjuukdSgdug-RD_Z6R5oCodYcsCDNuLWSPcRA-hx9ywGUlliZ6ks-HJc0kyJX8y30Ys_uEqj6pXObELRNURCx-dW6wX0xN-VwsmCVKbXhDBlfsXoWcHs0uRC6iTt03VNg31x6Ysq7quqiTntBCHgSY5iCEpG9ombVmWSV2CoJxnWXNo02W-YJP3MJ-HwCJPrpGZ3pOrBwdm8tzOM1wflS9-YjcOdzZNk98nzGK122SgZCNkHxWnvfNvqH_V5o0ZveK8YAx0_-wL-L3kXfaAa8uENoWZuo9HDF1-OGRF2RR1Efdd0bdFy2InnYLuPPl5_LTw_jnOGNyP4ZUh6tcRtuAPsc_uIzU_y4Qp9QQ2Xo3qPkO1wXPHRKn3x1-Cmf0AgXN_krgDAEf0VNU5beKxo7xsKtpQWpZDP_DsQAUwfoBsaFlzGLJYMZxU2yFFkB2x7GhGadbklBYVrWhaD8XQN3nBiqESRUmjMoOJSZX6wKk2l9h0IQe-XiwKlbTOfghxJ8kLrqGHf7a6UZvO4kgmk8Cltto45NyFhH8BTAbklg">