Re: WTF does "Enforcement failed" actually mean?
On Thu, 2015-10-01 at 08:52 +, 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.win...@ekiga.net 41 Buckmaster Roadm: +44 7770 465 077 xmpp: rus...@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder signature.asc Description: This is a digitally signed message part
Re: WTF does "Enforcement failed" actually mean?
Am Thu, 01 Oct 2015 08:52:43 + schrieb John Colvin : > 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
Re: WTF does "Enforcement failed" actually mean?
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.
Re: WTF does "Enforcement failed" actually mean?
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.win...@ekiga.net 41 Buckmaster Roadm: +44 7770 465 077 xmpp: rus...@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder signature.asc Description: This is a digitally signed message part
Re: WTF does "Enforcement failed" actually mean?
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
WTF does "Enforcement failed" actually mean?
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.win...@ekiga.net 41 Buckmaster Roadm: +44 7770 465 077 xmpp: rus...@winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder signature.asc Description: This is a digitally signed message part