On May 30, 2012, at 10:43 AM, David Blaikie <[email protected]> wrote:

> 
> 
> On Tue, May 29, 2012 at 6:01 PM, Richard Trieu <[email protected]> wrote:
> Author: rtrieu
> Date: Tue May 29 20:01:11 2012
> New Revision: 157666
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=157666&view=rev
> Log:
> Add new -Wunique-enum which will warn on enums which all elements have the
> same value and were initialized with literals.  
> 
> This currently produces a false positive on some anonymous-enum'd constants 
> in Diagnostic.h:635:
> 
>   enum {
>     /// MaxArguments - The maximum number of arguments we can hold. We 
> currently
>     /// only support up to 10 arguments (%0-%9).  A single diagnostic with 
> more
>     /// than that almost certainly has to be simplified anyway.
>     MaxArguments = 10,
> 
>     /// MaxRanges - The maximum number of ranges we can hold.
>     MaxRanges = 10,
> 
>     /// MaxFixItHints - The maximum number of ranges we can hold.
>     MaxFixItHints = 10
>   };
> 
> Perhaps we should ignore this warning if the enum is unnamed? Or specifically 
> if it's both unnamed and has no instances (so it could still fire on "enum { 
> x, y = 0 } a, b;")
> 
> Since this warning is on by default, this breaks a self-host Clang -Werror 
> build.

Mac OS X frameworks use anonymous enums for constants in order to have the 
store type be word-sized:

enum {
   NSCaseInsensitiveSearch = 1,
   NSLiteralSearch = 2,
   NSBackwardsSearch = 4,
   NSAnchoredSearch = 8,
   NSNumericSearch = 64,
   NSDiacriticInsensitiveSearch = 128,
   NSWidthInsensitiveSearch = 256,
   NSForcedOrderingSearch = 512,
   NSRegularExpressionSearch = 1024
};
typedef NSUInteger NSStringCompareOptions;
It's not likely that all options here will be the same, but then I would have 
said the same about enums in general. I don't have a strong opinion, but it's 
possible we should just change Diagnostic.h to use separate enums. (How common 
is it to group semi-related constants in an enum?)

Jordan

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

Reply via email to