ojhunt wrote:

> > and I thought making just preferred_type warnings early would be especially 
> > insane :D
> 
> I don't necessarily agree. `preferred_type` is a relatively new thing, so we 
> can try doing something new here.
> 

Yeah, but the implementation is essentially identical, so I would literally 
just be implementing it for preferred type and explicitly ignoring *actual* 
enums :D

> > [edit: I just realized even that might need to be an option because I can 
> > imagine someone, somewhere, depending on -Werror and not hitting this by 
> > luck]
> 
> I don't believe we need to be concerned about forward compatibility for 
> `-Werror` users. They should know they signed themselves up for pain, and 
> we're not going to compromise our QoI because of that.

Yeah, I was also trying to think of cases where this might not trigger a 
warning/error currently, because there's an explicit warning path for assigning 
a constant and (while too lazy to godbolt right now) imagine it being possible 
to have

```cpp
enum class Enum {
  A, B, C, D
};

struct S {
  Enum e: 1; // I'm a rockstar developer and "know" that I'll only ever assign 
A or B here
}
...
  S s;
  if (x)
    s.e = Enum::A;
  else
    s.e = Enum::B;
```

and not trip an error/warning?
 
> In any case, this PR is step in the right direction, so I don't want to block 
> its progress.

Cheers, I can file a follow on "warn on declaration" bug/PR

https://github.com/llvm/llvm-project/pull/116785
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to