On Sat, 1 Nov 2014 12:01:04 +0000
Iain Buclaw via Digitalmars-d <[email protected]> wrote:

> On 1 November 2014 11:56, ketmar via Digitalmars-d
> <[email protected]> wrote:
> > On Sat, 01 Nov 2014 11:31:51 +0000
> > anonymous via Digitalmars-d <[email protected]> wrote:
> >
> >> I don't know how D defines this, and I couldn't find anything but
> >> a forum discussion [1] (which I didn't read all of). But unless
> >> it's explicitly stated that the right-hand side is evaluated
> >> first, there is no bug.
> > there is. compiler generates code that modifies random memory
> > addresses. this is absolutely unacceptable. and this is just illogical
> > if we want dynamic arrays to look and work like "normal" arrays.
> > besides, it's easily fixable without any changes in evaluation order.
> 
> I'm not *entire* sure on that. :)
> 
> If the evaluation of LHS[IDX] has a side effect, you've broken LTR.
> 
> Think:
> Left => Index => Right
> 
> vs
> 
> Index => Right => Left
p.s. besides, the following code LOOKS wrong:

  info.list[idx] = saveIt(info, count-1);
  assert(info.list[idx] != 0);

aren't it a nonsence if we know for sure that saveIt() will never
return zero? if the code *LOOKS* wrong, it is wrong. that assert()
should never fire by any logical means.

Attachment: signature.asc
Description: PGP signature

Reply via email to