On 05/09/2017 07:04 PM, Martin Sebor wrote:
>>>
>
> -Wassign-enum is a Clang warning too, it just isn't included in
> either -Wall or -Wextra. It warns when a constant is assigned
> to a variable of an enumerated type and is not representable in
> it. I enhanced it for GCC to also warn when the constant doesn't
> correspond to an enumerator in the type,
Note that that means that the warning will trigger in the common use
case of using enums as bit flags, like:
enum flags
{
F1 = 1 << 1,
F2 = 1 << 2,
F3 = 1 << 3
};
void foo ()
{
enum flags f = 0;
f = F1 | F2;
}
I was going to suggest adding an attribute to mark such enum
types, and it turns out that Clang has one already:
https://clang.llvm.org/docs/AttributeReference.html#flag-enum
So, IMHO if we add the warning, IWBN to add the attribute as well.
> but I'm starting to think
> that rather than adding yet another option to GCC it might be better
> to extend your -Wenum-conversion once it's committed to cover those
> cases (and also to avoid issuing multiple warnings for essentially
> the same problem). Let me ponder that some more.
Thanks,
Pedro Alves