<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 18 February 2018 at 12:01, Jonathan M Davis via Digitalmars-d <span dir="ltr"><<a href="mailto:digitalmars-d@puremagic.com" target="_blank">digitalmars-d@puremagic.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On Sunday, February 18, 2018 19:42:07 Johan Engelen via Digitalmars-d wrote:<br>
> > There are hundreds of lines I need to molest to make the<br>
> > compiler shut up. I won't type another line of code on my<br>
> > colour library until this noise is gone... I will not maintain<br>
> > it. I am emotionally incapable of assaulting my code with those<br>
> > casts.<br>
><br>
> Using the `-transition=intpromote` compile flag is no option for<br>
> you?<br>
<br>
</span>Since that's a transition flag, it's really only a stop-gap solution. So, if<br>
his issue is that he doesn't like having the casts in his code as opposed to<br>
not wanting to deal with updating his code right now, the flag really<br>
doesn't help.<br>
<br>
I'd say that if he's not going to abandon his library, he either needs to<br>
just grit his teeth and use the explicit casts, or he's going to need to<br>
refactor the code so that the casts are unnecessary.<br>
<br>
- Jonathan M Davis<br>
</blockquote></div><br></div><div class="gmail_extra">Here's one file for instance (they all do this, although I can rearrange the noise somewhat):<br><br>std\experimental\normint.d(526,24): Deprecation: integral promotion not done for `-convertNormBits(((v ^ 512u) == 0u ? ~v : -v) & 511u)`, use '-transition=intpromote' switch or `-cast(int)(convertNormBits(((v ^ 512u) == 0u ? ~v : -v) & 511u))`<br>std\experimental\normint.d(526,119): Deprecation: integral promotion not done for `~v`, use '-transition=intpromote' switch or `~cast(int)(v)`<br>std\experimental\normint.d(526,124): Deprecation: integral promotion not done for `-v`, use '-transition=intpromote' switch or `-cast(int)(v)`<br>std\experimental\normint.d-mixin-78(78,1): Deprecation: integral promotion not done for `+this.value`, use '-transition=intpromote' switch or `+cast(int)(this.value)`<br>std\experimental\normint.d-mixin-78(78,1): Deprecation: integral promotion not done for `-this.value`, use '-transition=intpromote' switch or `-cast(int)(this.value)`<br>std\experimental\normint.d-mixin-78(78,1): Deprecation: integral promotion not done for `~this.value`, use '-transition=intpromote' switch or `~cast(int)(this.value)`<br>std\experimental\normint.d-mixin-78(78,1): Deprecation: integral promotion not done for `~this.value`, use '-transition=intpromote' switch or `~cast(int)(this.value)`<br>std\experimental\normint.d-mixin-78(78,1): Deprecation: integral promotion not done for `-this.value`, use '-transition=intpromote' switch or `-cast(int)(this.value)`<br>std\experimental\normint.d(526,119): Deprecation: integral promotion not done for `~v`, use '-transition=intpromote' switch or `~cast(int)(v)`<br>std\experimental\normint.d(526,124): Deprecation: integral promotion not done for `-v`, use '-transition=intpromote' switch or `-cast(int)(v)`<br>std\experimental\normint.d(526,24): Deprecation: integral promotion not done for `-convertNormBits(cast(ubyte)(((cast(int)v ^ 128) == 0 ? cast(int)~v : cast(int)-v) & 127))`, use '-transition=intpromote' switch or `-cast(int)(convertNormBits(cast(ubyte)(((cast(int)v ^ 128) == 0 ? cast(int)~v : cast(int)-v) & 127)))`<br>std\experimental\normint.d(526,119): Deprecation: integral promotion not done for `~v`, use '-transition=intpromote' switch or `~cast(int)(v)`<br>std\experimental\normint.d(526,124): Deprecation: integral promotion not done for `-v`, use '-transition=intpromote' switch or `-cast(int)(v)`<br>std\experimental\normint.d(526,24): Deprecation: integral promotion not done for `-convertNormBits(cast(ushort)(((cast(int)v ^ 32768) == 0 ? cast(int)~v : cast(int)-v) & 32767))`, use '-transition=intpromote' switch or `-cast(int)(convertNormBits(cast(ushort)(((cast(int)v ^ 32768) == 0 ? cast(int)~v : cast(int)-v) & 32767)))`<br>std\experimental\normint.d(526,24): Deprecation: integral promotion not done for `-convertNormBits(((v ^ 2u) == 0u ? ~v : -v) & 1u)`, use '-transition=intpromote' switch or `-cast(int)(convertNormBits(((v ^ 2u) == 0u ? ~v : -v) & 1u))`<br>std\experimental\normint.d(526,24): Deprecation: integral promotion not done for `-convertNormBits(((v ^ 4u) == 0u ? ~v : -v) & 3u)`, use '-transition=intpromote' switch or `-cast(int)(convertNormBits(((v ^ 4u) == 0u ? ~v : -v) & 3u))`<br>std\experimental\normint.d-mixin-78(78,1): Deprecation: integral promotion not done for `+this.value`, use '-transition=intpromote' switch or `+cast(int)(this.value)`<br>std\experimental\normint.d(526,119): Deprecation: integral promotion not done for `~v`, use '-transition=intpromote' switch or `~cast(int)(v)`<br>std\experimental\normint.d(526,124): Deprecation: integral promotion not done for `-v`, use '-transition=intpromote' switch or `-cast(int)(v)`<br>std\experimental\normint.d(526,24): Deprecation: integral promotion not done for `-convertNormBits(cast(const(ubyte))(((cast(int)v ^ 128) == 0 ? cast(int)~v : cast(int)-v) & 127))`, use '-transition=intpromote' switch or `-cast(int)(convertNormBits(cast(const(ubyte))(((cast(int)v ^ 128) == 0 ? cast(int)~v : cast(int)-v) & 127)))`<br>std\experimental\normint.d(526,119): Deprecation: integral promotion not done for `~v`, use '-transition=intpromote' switch or `~cast(int)(v)`<br>std\experimental\normint.d(526,124): Deprecation: integral promotion not done for `-v`, use '-transition=intpromote' switch or `-cast(int)(v)`<br>std\experimental\normint.d(526,24): Deprecation: integral promotion not done for `-convertNormBits(cast(const(ushort))(((cast(int)v ^ 32768) == 0 ? cast(int)~v : cast(int)-v) & 32767))`, use '-transition=intpromote' switch or `-cast(int)(convertNormBits(cast(const(ushort))(((cast(int)v ^ 32768) == 0 ? cast(int)~v : cast(int)-v) & 32767)))`<br><br></div><div class="gmail_extra">I'll admit I'm wildly overreacting, but I don't want to explicitly write the implicit casts.<br>It's a library for other people to use; so the suggestion is really "tell everyone using the lib to build with -transition=intpromote".<br><br></div><div class="gmail_extra">If -x does implicit int promotion, fine... but I don't want to explicitly cast to int everywhere to silence the noise up when the cast is actually implicit!<br></div><div class="gmail_extra">How long is this message meant to hang around? I think I'd rather wait until it's gone than change the code...<br></div></div>