parser bug?

ketmar via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Oct 23 14:07:05 PDT 2014


On Thu, 23 Oct 2014 11:15:14 -0700
Charles Hixson via Digitalmars-d-learn
<digitalmars-d-learn at 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. ;-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.puremagic.com/pipermail/digitalmars-d-learn/attachments/20141024/4965d815/attachment.sig>


More information about the Digitalmars-d-learn mailing list