October 23, 2014 Re: parser bug? | ||||
---|---|---|---|---|
| ||||
Attachments: | On Thu, 23 Oct 2014 11:15:14 -0700 Charles Hixson via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> wrote: > The code: > void go (ulong recNum) > { assert (buf[0] == (fh.sizeof + recNo * buf.length) & 0x7f); > if (dirty) > yields the error message: > ells$ dmd test.d > test.d(78): Error: buf[0] == fh.sizeof + recNo * buf.length must be > parenthesized when next to operator & > > And I'll swear it looks parenthesized to me. > > void go (ulong recNum) > { ubyte tst = (fh.sizeof + recNo * buf.length) & > 0x7f; assert (buf[0] == tst); > if (dirty) > > compiles without error. > > Any idea what's going on? dmd wants this: `((fh.sizeof + recNo * buf.length) & 0x7f)`. it doesn't like 'a == b&c', 'cause this can be the source of troubles introduced by simple typo, for example (uses wants `a == b && c`) or something. so it want you to prove your will. ;-) |
Copyright © 1999-2021 by the D Language Foundation