12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- discard """
- errormsg: "number out of range: '0x123'u8'"
- """
- # Bug #1179
- # Unsigneds
- # 8 bit
- let ref1 = 128'u8 shr 7
- let hex1 = 0x80'u8 shr 7
- let oct1 = 0o200'u8 shr 7
- let dig1 = 0b10000000'u8 shr 7
- doAssert(ref1 == 1)
- doAssert(ref1 == hex1)
- doAssert(ref1 == oct1)
- doAssert(ref1 == dig1)
- # 16 bit
- let ref2 = 32768'u16 shr 15
- let hex2 = 0x8000'u16 shr 15
- let oct2 = 0o100000'u16 shr 15
- let dig2 = 0b1000000000000000'u16 shr 15
- doAssert(ref2 == 1)
- doAssert(ref2 == hex2)
- doAssert(ref2 == oct2)
- doAssert(ref2 == dig2)
- # 32 bit
- let ref3 = 2147483648'u32 shr 31
- let hex3 = 0x80000000'u32 shr 31
- let oct3 = 0o20000000000'u32 shr 31
- let dig3 = 0b10000000000000000000000000000000'u32 shr 31
- doAssert(ref3 == 1)
- doAssert(ref3 == hex3)
- doAssert(ref3 == oct3)
- doAssert(ref3 == dig3)
- # Below doesn't work for lexer stage errors...
- # doAssert(compiles(0xFF'u8) == true)
- # doAssert(compiles(0xFFF'u16) == true)
- # doAssert(compiles(0x7FFF'i16) == true)
- # doAssert(compiles(0x123'u8) == false)
- # doAssert(compiles(0x123'i8) == false)
- # doAssert(compiles(0x123123'u16) == false)
- # doAssert(compiles(0x123123'i16) == false)
- # Should compile #
- let boundOkHex1 = 0xFF'u8
- let boundOkHex2 = 0xFFFF'u16
- let boundOkHex3 = 0x7FFF'i16
- let boundOkHex4 = 0x80'i8
- let boundOkHex5 = 0xFF'i8
- let boundOkHex6 = 0xFFFF'i16
- let boundOkHex7 = 0x7FFF'i16
- # Should _not_ compile #
- let boundBreakingHex1 = 0x123'u8
- let boundBreakingHex2 = 0x123'i8
- let boundBreakingHex3 = 0x123123'u16
- let boundBreakingHex4 = 0x123123'i16
|