I don't agree. I believe ECMA specifies that an Integer (no sign) can be written in decimal, hexadecimal or octal, with the same semantics. Therefore 0xFF is 255. It is only at the level of Signed_integer (or whatever it is called) that the sign comes into play. Note also that in rev 68843 print ({INTEGER_8} 0xFF) prints -1 print ({INTEGER_8} -0xFF} gives integer too large compile error I don't think it is the intention of ECMA that the value of 0xFF depend on the context. I think it is always 255. Please see section 8.32.30 for the semantics of Integer.