digitalmars.D.bugs - [Issue 18926] New: Template-related intpromote deprecation message
- d-bugmail puremagic.com (43/43) May 31 2018 https://issues.dlang.org/show_bug.cgi?id=18926
https://issues.dlang.org/show_bug.cgi?id=18926 Issue ID: 18926 Summary: Template-related intpromote deprecation message spam Product: D Version: D2 Hardware: x86_64 URL: http://dlang.org/ OS: Mac OS X Status: NEW Severity: normal Priority: P3 Component: dmd Assignee: nobody puremagic.com Reporter: meapineapple gmail.com I downloaded a newer version of DMD and when I went to compile some code, I got a LOT of intpromote deprecation errors. Many of them repeated for the same line, and in one case it was repeated 300+ times for a single line of code. This is probably because this particular function gets a lot of different template parameters when running unit tests. /Users/pineapple/Dropbox/Projects/mach.d/mach/math/bits/inject.d(112): Deprecation: integral promotion not done for -cast(ubyte)bit, use '-transition=intpromote' switch or -cast(int)(cast(ubyte)bit) This was the function causing the error, due to `-(cast(ubyte) bit)` /// Inject bit into a value where the bit offset is known at compile time. /// When the `assumezero` template argument is true, the operation is able /// to be optimized by assuming the targeted bits are all initialized to 0. auto injectbit(uint offset, bool assumezero = false, T)( T value, in bool bit ) if( offset < T.sizeof * 8 ){ enum byteoffset = offset / 8; enum bitoffset = offset % 8; T target = value; auto ptr = cast(ubyte*) &target + byteoffset; static if(assumezero){ *ptr |= cast(ubyte) bit << bitoffset; }else{ *ptr ^= (-(cast(ubyte) bit) ^ *ptr) & (1 << bitoffset); } return target; } --
May 31 2018