On May 15, 2012, at 9:05 AM, Terry Long <[email protected]> wrote:

> Hi all,
> 
> This patch mostly inspired by http://llvm.org/bugs/show_bug.cgi?id=9243 -- 
> poor "duplicate case" diagnostic with enums
> 
> Previously the diagnostic for duplicate case values in switch statements was 
> always something like "duplicate case value '5'" 
> 
> What my patch changes:
> When the duplicate case is exactly the same in textual representation (in 
> source code), the diagnostic will use that exact text in the diagnostic.
> e.g. using MyEnum twice gives the diagnostic "duplicate case value 'MyEnum'"
> 
> If the textual representations differ, the new diagnostic explicitly states 
> they are equal to the same value
> e.g. using MyEnum (equal to 5) and 5, the diagnostic displays "duplicate case 
> value: 'MyEnum' and '5' both equal '5'"
> 
> The patch does the same for any valid expression in a case statement 
> (including macros, const ints, char literals, etc.).


I'm a bit uncomfortable with the textual approach here. Why not analyze the 
expressions to check whether they are references to named declarations, and use 
those names in the diagnostic? It won't catch some macro cases, but it's far 
simpler.

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

Reply via email to