Files
Josh Kang 390ac33d00 List unhandled enumerators explicitly in switches (#15560)
Summary:
Pull Request resolved: https://github.com/meta/rocksdb/pull/15560

## Summary

clang's `-Wswitch-enum` warning (`clang-diagnostic-switch-enum`) fires
when a `switch` over an enum doesn't name every enumerator, even if the
switch has a `default:`. A full clang-tidy scan reports 79 such switches
in existing code, and they get flagged whenever nearby lines change.
Naming the remaining enumerators also means that a newly added
enumerator triggers the warning, instead of silently falling into
`default:`.

This diff fixes 47 of them by adding the missing `case X:` labels right
before the existing `default:` (or next to the branch that already
handles them). Behavior is unchanged: no existing case is reordered and
no branch body changes. `default:` is kept wherever the value can come
from disk, a cast, or user options, so out-of-range values are still
handled as before. Examples: cache entry roles and admission policies in
`SecondaryCacheAdapter`, `FileType` in `corruption_test`, `ChecksumType`
in `ComputeBuiltinChecksum*` (with `kNoChecksum` now named explicitly),
and trace/IO enums in several tools.

Not changed (31; upstream has since removed one): switches where listing
everything would hurt readability and `default:` is the intended
handler. That covers `ValueType` switches on the read path (`DBIter`,
`MemTable::SaveValue`, `GetContext`) with about 20 unhandled values
each, `CompressionType` and `IOActivity` switches with more than 100
custom/reserved values, and test trace handlers that accept one
`TraceType`. Upstream has since added two more test trace switches
(five and three `TraceType`s) in `db_etc2_test`, also left unchanged.

Reviewed By: xingbowang

Differential Revision: D123186312

fbshipit-source-id: 5f6571bb68e28f1caa201bb20524714da18cc63d
2026-11-06 12:18:50 -08:00
..