[Clang] Show type in enum out of range diagnostic
authorDimitry Andric <dimitry@andric.com>
Tue, 13 Jun 2023 08:58:07 +0000 (10:58 +0200)
committerDimitry Andric <dimitry@andric.com>
Wed, 14 Jun 2023 18:34:19 +0000 (20:34 +0200)
commit69d42eef4bec208a2312bfa0d2194013817eeba0
treee5818975b3f67ed477d58e6087ca23dcc17d2ea6
parent505829eacf0ebf404de1606aabd06da40cfd741f
[Clang] Show type in enum out of range diagnostic

When the diagnostic for an out of range enum value is printed, it
currently does not show the actual enum type in question, for example:

    v8/src/base/bit-field.h:43:29: error: integer value 7 is outside the valid range of values [0, 3] for this enumeration type [-Wenum-constexpr-conversion]
      static constexpr T kMax = static_cast<T>(kNumValues - 1);
                                ^

This can make it cumbersome to find the cause for the problem. Add the
enum type to the diagnostic message, to make it easier.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D152788
clang/docs/ReleaseNotes.rst
clang/include/clang/Basic/DiagnosticASTKinds.td
clang/lib/AST/ExprConstant.cpp
clang/test/SemaCXX/constant-expression-cxx11.cpp
clang/test/SemaCXX/cxx2a-consteval.cpp