[Issue 7423] Regression (2.057): Hex Literals are no longer treated as unsigned.

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Mar 20 12:35:18 PDT 2012


http://d.puremagic.com/issues/show_bug.cgi?id=7423



--- Comment #10 from Don <clugdbug at yahoo.com.au> 2012-03-20 12:35:34 PDT ---
(In reply to comment #9)
> (In reply to comment #8)
> > (In reply to comment #7)
> > Hex literals are supposed to be ints, not uints. The code should work anyway,
> > because x is a uint, therefore (x & LITERAL) is of type uint.
> 
> Sigh, and I've got a number of other people telling me it should be uint. I'm
> going to ask Walter for the final answer.

I'm wrong, it's in the spec (lexer.html).

If it is in the range 0..int.max, it is an int.
If it is in the range int.max+1u .. uint.max, it is a uint.
You can check it with this:

static assert(is (typeof(0x7FFF_FFFF) == int));
static assert(is (typeof(0x8000_0000) == uint));

So, it looks as though your original interpretation of the issue wasn't
correct. There may be something else going on though.

The fact that you were on Windows rules out a 64 bit codegen issue, which was
the obvious scapegoat.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list