﻿:: {n:n, r8:r8, r4:r4, i:i, i8:i8, i4:i4, i2:i2, i1:i1, u8:u8, u4:u4, u2:u2, u1:u1}
// Note that many of these cases are also in a lexer test. Diff the tests to see.
1
123456
123456789012345678901234567890
123456789012345678901234567890f
123456789012345678901234567890F

1.0
.5
1e3
1e+3
1e-3
.1e4
.123456789012345678901234567890
123456.789012345678901234567890
123456.789012345678901234567890E-6
1e308
1e309
.01e310
1e308 * 10
// REVIEW: these produce unhelpful bind errors. Better to produce lex errors?
.e3
5.
5.e3


// These should be u8.
0xFFFFFFFFFFFFFFFFu
0xFFFFFFFFFFFFFFFFU
18446744073709551615u
18446744073709551615U

// These should be i.
0xFFFFFFFFFFFFFFFF
18446744073709551615

0x8000000000000000
9223372036854775808

// These should be i8.
0x7FFFFFFFFFFFFFFF
9223372036854775807

// These should be i.
0x10000000000000000
0x10000000000000000U
18446744073709551616
18446744073709551616u


12345
12345f
12345U
255
255u
123.5u

1234.5
123.45
123e45

// REVIEW: these produce unhelpful bind errors. Better to produce lex errors?
123e+
123E-
123e

0x
0X
// REVIEW: these produce unhelpful bind errors. Better to produce lex errors?
0xABCDEFGH


1u
1U
1u1
1u2
1u4
1u8
1u3

1i
1i1
1i2
1i4
1i8
1ia
1i3

1l
1L

1ul
1uL
1Ul
1UL

1lu
1lU
1Lu
1LU

// REVIEW: these produce unhelpful bind errors. Better to produce lex errors?
1l2
1ul2
1lu2

1d
1f
1r4
1r8
1r
1r1
1r2
1r3

1a1
1d2
1f3


256u
256u1
256u2
256u4
256u8
256u3

256i
256i1
256i2
256i4
256i8
256ia
256i3

256d
256f
256r4
256r8
256r
256r1
256r2
256r3

256a1
256d2
256f3


256U
256U1
256U2
256U4
256U8
256U3

256I
256I1
256I2
256I4
256I8
256IA
256I3

256D
256F
256R4
256R8
256R
256R1
256R2
256R3

256A1
256D2
256F3


12.3u
12.3u1
12.3u2
12.3u4
12.3u8
12.3u3

12.3i
12.3i1
12.3i2
12.3i4
12.3i8
12.3ia
12.3i3

12.3d
12.3f
12.3r4
12.3r8
12.3r
12.3r1
12.3r2
12.3r3

1e400d
1e400f
2e100d
2e100f
2e100r8
2e100r4
2e100r

1e-400d
1e-400f
2e-100d
2e-100f
2e-100r8
2e-100r4
2e-100r

12.3a1
12.3d2
12.3f3


0xFFu
0xFFu1
0x7Fu1
0x80u1
0xFFu2
0xFFu4
0xFFu8
0xFFu3

0xFFi
0xFFi1
0x7Fi1
0x80i1
0xFFi2
0xFFi4
0xFFi8
0xFFia
0xFFi3

0xFFd
0xFFf
0xFFr4
0xFFr8
0xFFr
0xFFr1
0xFFr2
0xFFr3

0xFFa1
0xFFd2
0xFFf3

0xFFFFu
0xFFFFu1
0xFFFFu2
0x7FFFu2
0x8000u2
0xFFFFu4
0xFFFFu8

0xFFFFi
0xFFFFi1
0xFFFFi2
0x7FFFi2
0x8000i2
0xFFFFi4
0xFFFFi8
0xFFFFia

0xFFFFFFFFu
0xFFFFFFFFu1
0xFFFFFFFFu2
0xFFFFFFFFu4
0x7FFFFFFFu4
0x80000000u4
0xFFFFFFFFu8

0xFFFFFFFFi
0xFFFFFFFFi1
0xFFFFFFFFi2
0xFFFFFFFFi4
0x7FFFFFFFi4
0x80000000i4
0xFFFFFFFFi8
0xFFFFFFFFia

0xFFFFFFFFFFFFFFFFu
0xFFFFFFFFFFFFFFFFu1
0xFFFFFFFFFFFFFFFFu2
0xFFFFFFFFFFFFFFFFu4
0xFFFFFFFFFFFFFFFFu8
0x7FFFFFFFFFFFFFFFu8
0x8000000000000000u8
0xFFFFFFFFFFFFFFFFuL

0xFFFFFFFFFFFFFFFFi
0xFFFFFFFFFFFFFFFFi1
0xFFFFFFFFFFFFFFFFi2
0xFFFFFFFFFFFFFFFFi4
0xFFFFFFFFFFFFFFFFi8
0x7FFFFFFFFFFFFFFFi8
0x7FFFFFFFFFFFFFFFL
0x8000000000000000i8
0x8000000000000000L
0xFFFFFFFFFFFFFFFFia

// *** Digit separator

0xFFFF_FFFF_FFFF_FFFFi8
0x_FF_FF
0x_FF_FF_


123_45_6789
123_
123_456.1_25
123_456_.1_25
123_456.1_25_
123_456e1_25
123_456_e1_25
123_456e1_25_
123___456.1_____25
123_456.1_25
// REVIEW: these produce unhelpful bind errors. Better to produce lex errors?
123_456._1_25
123_456e_1_25


0b1000
0B1000
0b1_0011
0b1__0011
0b_1000
0b1000_
// REVIEW: This might be useful for binary (supporting two adjacent _).
0b0001_0010_0011_0100__0101_0110_0111_1000__1001_1010_1011_1100__1101_1110_1111_0000
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000_

0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 60 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 56 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 52 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 48 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 44 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 40 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 36 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 32 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 28 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 24 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 20 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 16 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr 12 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr  8 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr  4 band 0xF
0b0001_0010_0011_0100_0101_0110_0111_1000_1001_1010_1011_1100_1101_1110_1111_0000 shr  0 band 0xF

// *** Coverage

// REVIEW: these produce unhelpful bind errors. Better to produce lex errors?
1.0L
0b0101f
0b0101d

// Integer constant overflow.
0.0 + 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
