Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
October 01, 2015 WTF does "Enforcement failed" actually mean? | ||||
---|---|---|---|---|
| ||||
Attachments:
| I have the code:
reduce!"a+b"(x)
where x is a int[] and I get an exception "Enforcement failed" at run time. This gives me enough information to say ¿que?
--
Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder@ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
|
October 01, 2015 Re: WTF does "Enforcement failed" actually mean? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Russel Winder | On 09/30/2015 10:46 PM, Russel Winder via Digitalmars-d-learn wrote: > I have the code: > > reduce!"a+b"(x) > > where x is a int[] and I get an exception "Enforcement failed" at run > time. This gives me enough information to say ¿que? > It's coming from the following no-message enforce(): enforce(!r.empty); https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm/iteration.d#L2481 You are using the no-seed version of reduce(), which uses the first element as seed, which means that the range cannot be empty. Ali |
October 01, 2015 Re: WTF does "Enforcement failed" actually mean? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli Attachments:
| On Wed, 2015-09-30 at 23:35 -0700, Ali Çehreli via Digitalmars-d-learn wrote: > On 09/30/2015 10:46 PM, Russel Winder via Digitalmars-d-learn wrote: > > I have the code: > > > > reduce!"a+b"(x) > > > > where x is a int[] and I get an exception "Enforcement failed" at > > run > > time. This gives me enough information to say ¿que? > > > > It's coming from the following no-message enforce(): > > enforce(!r.empty); > > > https://github.com/D-Programming-Language/phobos/blob/master/std/algo > rithm/iteration.d#L2481 > > You are using the no-seed version of reduce(), which uses the first element as seed, which means that the range cannot be empty. Well that explanation (*) makes it abundantly clear that the error reporting from this part of Phobos is distinctly substandard, let alone below par. (*) Which is clear and informative! -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder@ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder |
October 01, 2015 Re: WTF does "Enforcement failed" actually mean? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Russel Winder | On Thursday, 1 October 2015 at 07:08:00 UTC, Russel Winder wrote:
> On Wed, 2015-09-30 at 23:35 -0700, Ali Çehreli via Digitalmars-d-learn wrote:
>> On 09/30/2015 10:46 PM, Russel Winder via Digitalmars-d-learn wrote:
>> > [...]
>>
>> It's coming from the following no-message enforce():
>>
>> enforce(!r.empty);
>>
>>
>> https://github.com/D-Programming-Language/phobos/blob/master/std/algo
>> rithm/iteration.d#L2481
>>
>> You are using the no-seed version of reduce(), which uses the first element as seed, which means that the range cannot be empty.
>
> Well that explanation (*) makes it abundantly clear that the error reporting from this part of Phobos is distinctly substandard, let alone below par.
>
>
> (*) Which is clear and informative!
Bug report? Then it'll get fixed.
|
October 01, 2015 Re: WTF does "Enforcement failed" actually mean? | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Colvin | Am Thu, 01 Oct 2015 08:52:43 +0000 schrieb John Colvin <john.loughran.colvin@gmail.com>: > On Thursday, 1 October 2015 at 07:08:00 UTC, Russel Winder wrote: > > On Wed, 2015-09-30 at 23:35 -0700, Ali Çehreli via Digitalmars-d-learn wrote: > >> On 09/30/2015 10:46 PM, Russel Winder via Digitalmars-d-learn wrote: > >> > [...] > >> > >> It's coming from the following no-message enforce(): > >> > >> enforce(!r.empty); > >> > >> > >> https://github.com/D-Programming-Language/phobos/blob/master/std/algo rithm/iteration.d#L2481 > >> > >> You are using the no-seed version of reduce(), which uses the first element as seed, which means that the range cannot be empty. > > > > Well that explanation (*) makes it abundantly clear that the error reporting from this part of Phobos is distinctly substandard, let alone below par. > > > > > > (*) Which is clear and informative! > > Bug report? Then it'll get fixed. The problem is that in out minds addition has an implicit seed value of 0 and multiplication has 1, so a potentially empty range doesn't immediately raise a red flag. The correct thing to use, following this train of thought, is http://dlang.org/phobos/std_algorithm_iteration.html#.sum (Additionally it provides better accuracy when summing up floating-point values.) -- Marco |
October 01, 2015 Re: WTF does "Enforcement failed" actually mean? | ||||
---|---|---|---|---|
| ||||
Posted in reply to John Colvin Attachments:
| On Thu, 2015-10-01 at 08:52 +0000, John Colvin via Digitalmars-d-learn wrote: > […] > > Bug report? Then it'll get fixed. https://issues.dlang.org/show_bug.cgi?id=15133 Timer running… ;-) -- Russel. ============================================================================= Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder@ekiga.net 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder |
Copyright © 1999-2021 by the D Language Foundation