On Jan 21, 2012, at 10:12 AM, David Blaikie wrote:

> Author: dblaikie
> Date: Sat Jan 21 12:12:07 2012
> New Revision: 148640
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=148640&view=rev
> Log:
> Add -Wswitch-enum-redundant-default.
> 
> This warning acts as the complement to the main -Wswitch-enum warning (which
> warns whenever a switch over enum without a default doesn't cover all values 
> of
> the enum) & has been an an-doc coding convention in LLVM and Clang in my
> experience. The purpose is to ensure there's never a "dead" default in a
> switch-over-enum because this would hide future -Wswitch-enum errors.

We have a related problem with -Wswitch-enum in clang. with this option a 
default should not turn
off the warning when default covers un-used case labels. Currently clang's 
behavior of --Wswitch and
-Wswitch-enum  are the same. I think fixing that will not make the new option 
necessary.

-Wswitch
           Warn whenever a "switch" statement has an index of enumerated type 
and lacks a "case" for one or
           more of the named codes of that enumeration.  (The presence of a 
"default" label prevents this
           warning.)  "case" labels outside the enumeration range also provoke 
warnings when this option is
           used.  This warning is enabled by -Wall.

-Wswitch-enum
           Warn whenever a "switch" statement has an index of enumerated type 
and lacks a "case" for one or
           more of the named codes of that enumeration.  "case" labels outside 
the enumeration range also
           provoke warnings when this option is used.


int test18() {
  enum { A, B } a;
  switch (a) {
  case A: return 0;
  default: return 2;  
}
}

- Fariborz


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to