<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/76208>76208</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] suppress `[clang-analyzer-optin.core.EnumCastOutOfRange]` for bit-wise operator of scoped enum
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
zufuliu
</td>
</tr>
</table>
<pre>
related to issue #48725.
```c++
enum class Flag {
None = 0,
A = 1,
B = 2,
};
constexpr Flag operator|(Flag a, Flag b) noexcept {
return static_cast<Flag>(static_cast<int>(a) | static_cast<int>(b));
}
Flag getFlag() {
return Flag::A | Flag::B;
}
```
https://godbolt.org/z/bhqcoPEPj
```
<source>:8:12: warning: The value '3' provided to the cast expression is not in the valid range of values for 'Flag' [clang-analyzer-optin.core.EnumCastOutOfRange]
8 | return static_cast<Flag>(static_cast<int>(a) | static_cast<int>(b));
| ^
<source>:1:12: note: enum declared here
1 | enum class Flag {
| ~~~~~~~~~~~^~~~~~
2 | None = 0,
| ~~~~~~~~~
3 | A = 1,
| ~~~~~~
4 | B = 2,
| ~~~~~~
5 | };
| ~
<source>:12:12: note: Calling 'operator|'
12 | return Flag::A | Flag::B;
| ^~~~~~~~~~~~~~~~~
<source>:8:12: note: The value '3' provided to the cast expression is not in the valid range of values for 'Flag'
8 | return static_cast<Flag>(static_cast<int>(a) | static_cast<int>(b));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVU2TozYQ_TXti8ouaA0GDhz8ecxupXJPCWhjbckSkcTszhz2t6ckPODxepPsZaKihnE3eu-pW90tnJOdJqog20K2X4jBn42tXofToOSwqE37UllSwlPLvGHSuYEYA-RPRY7ZCpI9JJvr33UyPg3gNjzRSnq4sEYJ59hRiY5BfnUwxthvRhMDvmcJ4O5q3kRDCrhj84fbaMTpK8j3wLe37I3RztO33o40picrvLGQ7wCLaBIBMv5XA5ZMG_rWUO_fK7LkB6uZ88LL5s9GOA98FzYBPwAW7-1S-9EsAiDkO_YTfyAMzyQ5399qj6I68pEHixHsR1GjjA3wzSaSzb-3D5DfsnFLdPa-d2ELHgGPnWlro_zK2A7w-Ap4rM9_Nebz4fOXxxh858xgGwqH4psC-CZF4Bv2VVgtddDC_jgTexZqIAaYc8Cc9dY8y3a8Pv5MLMSGhUSRc9JoJh3TxjOpo_dZKNkyK3RHzJxGKMdOxga8MT45g2zbKKG7pdBCvbySXZreS71qjKXVQQ-XnXD-0-A_nX4PQJBdY8KKGLePy3OkmjivC7LDw3imUzy18RTesXZaapSw1LIzWZph0wj7j9U1Mn-fF2SH8T1-gpOyR3X4TvoMMTn55HxYsbfks_Vp2nRf0Y_4Zk8WPbdVP8I_DiT-EMmdUErqLlyid50hnyhSvL8b_6Xcfpbg73frXwroTeZHVM8s_P-rhgcR-oU1oqVvbYd1pENKqV3dta1FW_G25KVYUJXmCUfMi7JcnCtxyvKszNeU5oSYirqsi4KyNF3X_LSmbCErTJCniJiss5SXK0zLUyvKNZ3aU1vyDJ4SugipVko9X0IHXcTRWOVrTIqFEjUpF2cq4tiqvGxfADHMWFuFTct66Bw8JUo672YYL72K0_hmW7Znbuhjzlk42a-3v3USb0Et_fKrdDSNx3BLXGN6amMrWQxWVXdDQvrzUK8acwE8BpXX17K35gs1HvAYT-4Aj_HwfwcAAP__cpduOQ">