[clang] [clang] improve diagnostics for enums (PR #204682)
Corentin Jabot via cfe-commits
cfe-commits at lists.llvm.org
Fri Jun 19 00:14:01 PDT 2026
================
@@ -363,4 +363,22 @@ namespace Diagnostics {
// expected-note {{evaluates to '1 == 2'}}
static_assert(1 << 3 != 8, ""); // expected-error {{failed}} \
// expected-note {{evaluates to '8 != 8'}}
+ enum class TestEnum {
+ A = 0,
+ B = 1
+ };
+
+ template<TestEnum E> struct EnumTemplate {
+ static_assert(E == TestEnum::B, ""); // #enum-assert
+ };
+
+ EnumTemplate<TestEnum::A> test1;
+ // expected-error@#enum-assert {{static assertion failed due to requirement 'Diagnostics::TestEnum::A == Diagnostics::TestEnum::B': }} \
+ // expected-note at -1 {{in instantiation of template class 'Diagnostics::EnumTemplate<Diagnostics::TestEnum::A>' requested here}} \
+ // expected-note@#enum-assert {{evaluates to '0 == 1'}}
+
+ EnumTemplate<TestEnum(42)> test2;
+ // expected-error@#enum-assert {{static assertion failed due to requirement '(Diagnostics::TestEnum)42 == Diagnostics::TestEnum::B': }} \
+ // expected-note at -1 {{in instantiation of template class 'Diagnostics::EnumTemplate<42>' requested here}} \
+ // expected-note@#enum-assert {{evaluates to '42 == 1'}}
----------------
cor3ntin wrote:
Can you add unscoped enum tests? Maybe also tests with an explicit underlying type
https://github.com/llvm/llvm-project/pull/204682
More information about the cfe-commits
mailing list