Annoyance with new integer promotion deprecations

Manu turkeyman at gmail.com
Sun Feb 18 19:26:43 UTC 2018


On 18 February 2018 at 05:36, Dmitry Olshansky via Digitalmars-d <
digitalmars-d at puremagic.com> wrote:

> On Sunday, 18 February 2018 at 01:09:57 UTC, Manu wrote:
>
>> On 5 February 2018 at 11:22, H. S. Teoh via Digitalmars-d <
>> digitalmars-d at puremagic.com> wrote:
>>
>> Code:
>>>
>>>         struct S {
>>>                 byte[2] x;
>>>         }
>>>         void main() {
>>>                 S s, t;
>>>                 s.x = [ 1, -1 ];                // OK
>>>                 t.x = [ -s.x[0], -s.x[1] ];     // NG (line 7)
>>>         }
>>>
>>>
>>> Compiler says:
>>>         /tmp/test.d(7): Deprecation: integral promotion not done for
>>> `-s.x[0]`, use '-transition=intpromote' switch or `-cast(int)(s.x[0])`
>>>         /tmp/test.d(7): Deprecation: integral promotion not done for
>>> `-s.x[1]`, use '-transition=intpromote' switch or `-cast(int)(s.x[1])`
>>>
>>>
>>> Why should I need to explicitly cast to int only to reassign it back to
>>> byte?!  This is ridiculous.
>>>
>>
>>
>> Seriously, WTF is going on here?
>>
>
> C compilers did it for ages, but D doesn’t auto promote to int on unary
> ops. Hence the warning, the suggestion is kinda stupid thiugh.
>
> C gets away by truncating results silently on assign of int to byte


The 'solution' so add cast(int) and then cast back is not okay. I have code
that does a lot of work on bytes/shorts (colour components are small
integers that receive a lot of maths), and most lines get 3-4 times longer
because of these casts...
I can't accept that.

If change the behaviour (is done), then just let the code be broken!
Emitting these terrible noises, and encouraging people to make their code
even noisier than the compiler output is much worse than broken code.
There are hundreds of lines I need to molest to make the compiler shut up.
I won't type another line of code on my colour library until this noise is
gone... I will not maintain it. I am emotionally incapable of assaulting my
code with those casts.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20180218/173b88e2/attachment.html>


More information about the Digitalmars-d mailing list