<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/91408>91408</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] clang-tidy 18.1.5 will issue error for switches on enums with or without default
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
emosy
</td>
</tr>
</table>
<pre>
Consider this file:
```
#include <_types/_uint32_t.h>
enum class test_enum : uint32_t {
val1 = 0,
val2 = 1
};
static test_enum getVal() {
return test_enum::val1;
}
int main() {
auto v = getVal();
switch(v) {
case test_enum::val1:
return 1;
case test_enum::val2:
return 2;
}
return 0;
}
```
Run this file with clang-tidy 18.1.5 with `-checks=clang` and this error is reported:
`error: 'switch' missing 'default' label [clang-diagnostic-switch-default]`
but adding a default label will cause this error:
`error: default label in switch which covers all enumeration values [clang-diagnostic-covered-switch-default]`
It seems like you can't make clang-tidy happy either way.
Clang-tidy version: Homebrew LLVM version 18.1.5. Optimized build.
Platform: MacOS 14.1, Apple M3 Pro
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8VF2vozYQ_TXmZRRkTAjkgYfcpFEr7dWuWmlfI4Mnwb3GRv5IlP76ykBu2N1oUWTEeM6ZM54Tc-fkRSPWpHgjxSHhwXfG1tgbd08aI-713mgnBVrwnXRwlgpJviP0QOiObOj8mz5ZLnWrgkAg-f7k7wM6wo6nILXP2cmnHcn_mFJRhx5axZ0Dj86fxm-S7-CRC6R8m1IBrlxlQPIDUML2iyAbg9lcvDyQfIZMq_Pcy3bBf0H_nSvCKsK2S36LPlj9TIz95btY9clYHpbUUnvoudS_cgHw4A1cR2nLgp9UMcfdpG87wqrrL_D4tNzhazlz_Yfk7AfW30DZE7p4Zhb2ZPmpz0USfXEWP41_XP8O-ukUuEnfxTnry8pLcYesSrO0mMJkQ1dth-2HI_lhzCEbClyLCY_WGgvSgcXBWI9iabtxM_qFsPJxmCX00jmpLzEo8MyD8jGqeIMKSPE26RCSX7RxXrarCbl65BaHz16a4IELEck4zPsz0U0qBS0P8Zw_db7U9iNO6nnscOtk20FrrmgdcKUgjgot99Lo6OuA7qXcEYHiN7Kn9S8PDrF3oOQHwt0EaLkmrIye_cDlODo-DHdA6Tu0cOP3dEmzf-ZFpdLo2NSfpsfG4g2-fPn-_tiY55rC18HLXv6HApoglZj5vinuz8ZGO8I7b7_-A9k6zQjbw24YFMJ7Dt-sSUSdi22-5QnWWZkVGaMlZUlXs5y1BS1F0RTrTYOCVhkrz-eiakQm1vk5kTWjbE0LWjLGCspSmmNT4aZqNtt1RVtG1hR7LlWq1LVPjb0k0rmA9TZb0yoZ5-PGG5Cx5-kQxuKNaOsIWjXh4siaKum8e9J46dV4dy5gxeGl45WCsehs7LOxsx_QgdGjB9z0xzB2fJvgHxZKglV15_3gotHYkbDjRfouNGlresKOUc_8Wg3W_IutJ-w4los38Njm_wEAAP__IUnNgQ">