[PATCH] D67919: [Diagnostics] Warn if enumeration type mismatch in conditional expression

Dávid Bolvanský via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 25 16:31:54 PDT 2019


xbolva00 marked 6 inline comments as done.
xbolva00 added inline comments.


================
Comment at: test/Sema/warn-conditional-emum-types-mismatch.c:19
+
+int get_flag_anon_enum(int cond) {
+  return cond ? A : C;
----------------
aaron.ballman wrote:
> xbolva00 wrote:
> > Gcc warns here, but Clang does not warn when A != C..
> > 
> > So not sure here..
> My gut reaction is that I think Clang should warn here as well because the code pattern is confusing, but I'd also say that if there's a lot of false positives where the code is sensible, it may make sense to suppress the diagnostic. One situation I was thinking of where you could run into something like this is:
> ```
> enum {
>   STATUS_SUCCESS,
>   STATUS_FAILURE,
>   ...
>   MAX_BASE_STATUS_CODE
> };
> 
> enum ExtendedStatusCodes {
>   STATUS_SOMETHING_INTERESTING = MAX_BASE_STATUS_CODE + 1000,
>   ...
> };
> 
> int whatever(void) {
>   return some_condition() ? STATUS_SOMETHING_INTERESTING : STATUS_SUCCESS;
> }
> ```
+1


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67919/new/

https://reviews.llvm.org/D67919





More information about the cfe-commits mailing list