<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">