[PATCH] D130058: [Clang] Diagnose ill-formed constant expression when setting a non fixed enum to a value outside the range of the enumeration values
Erich Keane via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jul 27 06:33:28 PDT 2022
erichkeane added a comment.
Mostly Ok with this. The diagnostic seems a little subtle with the mathematical notation... just looking at the diagnostics I was like, "wait, why is 8 NOT included in the range -8, 8.... oh wait". This will be a little shocking to others perhaps?
Also, misisng any tests for the E3, I'd like to see the range for that too.
================
Comment at: clang/test/SemaCXX/constant-expression-cxx11.cpp:2420
+ constexpr E1 x2 = static_cast<E1>(8); // expected-error {{must be initialized by a constant expression}}
+ // expected-note at -1 {{integer value 8 is outside the valid range of values [-8, 8) for this enumeration type}}
+
----------------
Are we ok with how subtle the `[N, M)` syntax is here?
================
Comment at: clang/test/SemaCXX/constant-expression-cxx11.cpp:2427
+ // expected-note at -1 {{integer value 8 is outside the valid range of values [0, 8) for this enumeration type}}
+
+ constexpr E4 x6 = static_cast<E4>(0);
----------------
I see no tests for E3?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D130058/new/
https://reviews.llvm.org/D130058
More information about the cfe-commits
mailing list