[clang-tools-extra] [clang-tidy] Add AllowReferencedInitialValues to `readability-enum-initial-value` (PR #189459)
Baranov Victor via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 5 04:13:36 PDT 2026
=?utf-8?q?Björn?= Svensson <bjorn.a.svensson at est.tech>,
=?utf-8?q?Björn?= Svensson <bjorn.a.svensson at est.tech>,
=?utf-8?q?Björn?= Svensson <bjorn.a.svensson at est.tech>,
=?utf-8?q?Björn?= Svensson <bjorn.a.svensson at est.tech>,
=?utf-8?q?Björn?= Svensson <bjorn.a.svensson at est.tech>,
=?utf-8?q?Björn?= Svensson <bjorn.a.svensson at est.tech>,
=?utf-8?q?Björn?= Svensson <bjorn.a.svensson at est.tech>,
=?utf-8?q?Björn?= Svensson <bjorn.a.svensson at est.tech>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/189459 at github.com>
================
@@ -26,6 +26,32 @@ enum ESeqRef {
ESeqRef_alias = ESeqRef_a,
};
+// Error: sequential + multiple self-refs, should still warn and suggest
+// removing the sequential values but not the self-refs.
+enum ESeqMultiRef {
+ // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: sequential initial value in 'ESeqMultiRef' can be ignored
+ ESeqMultiRef_a = 1,
+ ESeqMultiRef_b = 2,
+ // CHECK-FIXES: ESeqMultiRef_b ,
+ ESeqMultiRef_c = 3,
+ // CHECK-FIXES: ESeqMultiRef_c ,
+ ESeqMultiRef_alias = ESeqMultiRef_a,
+ ESeqMultiRef_alias2 = ESeqMultiRef_b,
+};
+
+// Error: sequential + self-refs interleaved with the sequence, should still
+// warn and suggest removing the sequential values but not the self-refs.
+enum ESeqInterRef {
+ // CHECK-MESSAGES: :[[@LINE-1]]:1: warning: sequential initial value in 'ESeqInterRef' can be ignored
+ ESeqInterRef_a = 1,
+ ESeqInterRef_alias = ESeqInterRef_a,
+ ESeqInterRef_b = 2,
+ // CHECK-FIXES: ESeqInterRef_b ,
+ ESeqInterRef_c = 3,
+ // CHECK-FIXES: ESeqInterRef_c ,
+ ESeqInterRef_alias2 = ESeqInterRef_b,
----------------
vbvictor wrote:
After thinking a bit more about such fixes, can we add test:
```cpp
enum ESeqInterRef {
ESeqInterRef_a = 1,
ESeqInterRef_alias = ESeqInterRef_a,
ESeqInterRef_b = 2,
ESeqInterRef_c = 3,
ESeqInterRef_alias2 = ESeqInterRef_b,
ESeqInterRef_d = 4,
};
```
If we remove `4` from `ESeqInterRef_d` we would get different value (3):
https://godbolt.org/z/aef46j9YG.
This seems like a bug.
https://github.com/llvm/llvm-project/pull/189459
More information about the cfe-commits
mailing list