Checked!({short, ushort, byte, ubyte}, Throw): compilation fails
kdevel
kdevel at vogtner.de
Sat Apr 18 15:20:42 UTC 2020
On Saturday, 18 April 2020 at 08:39:52 UTC, tsbockman wrote:
[...]
>>> You also get a deprecation message, about an integral
>>> promotion not being performed. I believe the result is
>>> correct and the warning can be ignored.
>>
>> So the warning is a bug?
>
> The deprecation message is a consequence of a (very annoying)
> language change made after std.experimental.checkedint was
> written. It's not really a bug, although someone should
> probably fix it anyway.
The message suggests using -preview=intpromote. But it produces
another error:
```minusminus.d
void foo ()
{
import std.experimental.checkedint;
Checked!(short) b;
--b;
}
```
$ dmd -preview=intpromote minusminus.d
[...]/linux/bin64/../../src/phobos/std/experimental/checkedint.d(727): Error: cannot implicitly convert expression onOverflow(this.payload) of type int to short
minusminus.d(5): Error: template instance
std.experimental.checkedint.Checked!(short,
Abort).Checked.opUnary!"--" error instantiating
> Anyway, you might want to give my checkedint package on DUB a
> try, instead:
>
> https://code.dlang.org/packages/checkedint
Hm.
$ dub test
Generating test runner configuration 'checkedint-test-library'
for 'library' (library).
Excluding package.d file from test due to
https://issues.dlang.org/show_bug.cgi?id=11847
Performing "unittest" build using [...]/linux/bin64/dmd for
x86_64.
checkedint ~master: building configuration
"checkedint-test-library"...
Linking...
Running ./checkedint-test-library
source/checkedint/package.d(672): [unittest] unittest failure
core.exception.AssertError at source/checkedint/package.d(672):
unittest failure
----------------
??:? _d_unittestp [0x4c07b5]
source/checkedint/package.d:672 void
checkedint.__unittest_L654_C5() [0x49959c]
??:? void checkedint.__modtest() [0x4bc4b2]
??:? int
core.runtime.runModuleUnitTests().__foreachbody2(object.ModuleInfo*) [0x4da1ec]
??:? int object.ModuleInfo.opApply(scope int
delegate(object.ModuleInfo*)).__lambda2(immutable(object.ModuleInfo*)) [0x4bedb7]
??:? int rt.minfo.moduleinfos_apply(scope int
delegate(immutable(object.ModuleInfo*))).__foreachbody2(ref
rt.sections_elf_shared.DSO) [0x4c581f]
??:? int rt.sections_elf_shared.DSO.opApply(scope int
delegate(ref rt.sections_elf_shared.DSO)) [0x4c5d8c]
??:? int rt.minfo.moduleinfos_apply(scope int
delegate(immutable(object.ModuleInfo*))) [0x4c57ad]
??:? int object.ModuleInfo.opApply(scope int
delegate(object.ModuleInfo*)) [0x4bed89]
??:? runModuleUnitTests [0x4da029]
??:? void rt.dmain2._d_run_main2(char[][], ulong, extern (C) int
function(char[][])*).runAll() [0x4c226c]
??:? void rt.dmain2._d_run_main2(char[][], ulong, extern (C) int
function(char[][])*).tryExec(scope void delegate()) [0x4c21f8]
??:? _d_run_main2 [0x4c2161]
??:? _d_run_main [0x4c1f1d]
[...]/linux/bin64/../../src/druntime/import/core/internal/entrypoint.d:34 main [0x48c241]
??:? __libc_start_main [0x7ffff700e585]
1/3 unittests FAILED
Program exited with code 1
More information about the Digitalmars-d-learn
mailing list