Why does intpromote spew warnings for ~ operator?
Walter Bright
newshound2 at digitalmars.com
Thu Sep 16 03:58:23 UTC 2021
On 9/13/2021 1:35 PM, Steven Schveighoffer wrote:
> To reiterate, intpromote is going to require lots of casts, most of which
> wouldn't change any behavior that is currently happening.
Intpromote has been there for many years, it hasn't caused a big problem.
> The cases where the behavior is different is going from 8 or 16-bit integers to
> higher bit numbers. IMO, intpromote should focus on those, and leave the others
> alone.
The thing is, if b is a ubyte:
~b
is supposed to be an int, not a ubyte. It's not just about getting the bits right.
> But fixing this problem doesn't mean we have to break all existing code for the
> purpose of busywork to insert casts to achieve the current behavior.
It needs to move to C behavior.
> I just realized, the deprecation doesn't even say how to replicate current
> behavior. It says to cast to int before applying the operator, but that's not
> what current behavior does, it's what the *new* behavior does. Typically,
> deprecations identify how to adjust your code so it continues to do the same
> thing. This does the opposite.
The message is about inuring your code so it will work as intended regardless of
the switch setting.
More information about the Digitalmars-d
mailing list