https://gcc.gnu.org/bugzilla/show_bug.cgi?id=7654

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|SUSPENDED                   |NEW
                 CC|                            |msebor at gcc dot gnu.org
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=78736

--- Comment #11 from Martin Sebor <msebor at gcc dot gnu.org> ---
I'll confirm this ancient request.

Bug 78736 asks for something similar, and I'm working on enhancing the solution
there even further (to diagnose assigning constants that don't have a
corresponding enumerator in the destination type).  I'll add that on the
following slightly modified test case  Clang issues the warnings below: 

$ cat t.C && clang -S -Wall -Wextra -Weverything -xc t.C
void f (int i)
{
  enum e1 { e1a, e1b };
  enum e1 e1v;
  enum e2 { e2a, e2b };
  enum e2 e2v;

  e1v = 1;   // no warning
  e1v = 3;   // warning
  e1v = e1a; // ok
  e2v = e1v; // warning
  i = e1v;   // ok I guess
  e2v = i;   // warning
}
t.C:9:9: warning: integer constant not in range of enumerated type 'enum e1'
      [-Wassign-enum]
  e1v = 3;   // warning
        ^
t.C:11:9: warning: implicit conversion from enumeration type 'enum e1' to
      different enumeration type 'enum e2' [-Wenum-conversion]
  e2v = e1v; // warning
      ~ ^~~
t.C:13:9: warning: implicit conversion changes signedness: 'int' to 'enum e2'
      [-Wsign-conversion]
  e2v = i;   // warning
      ~ ^
t.C:1:6: warning: no previous prototype for function 'f' [-Wmissing-prototypes]
void f (int i)
     ^
4 warnings

Reply via email to