[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