]> git.lizzy.rs Git - rust.git/blob - src/test/ui/integer-literal-suffix-inference.rs
Auto merge of #65421 - estebank:variants, r=petrochenkov
[rust.git] / src / test / ui / integer-literal-suffix-inference.rs
1 fn main() {
2
3     // the smallest positive values that need these types
4     let a8: i8 = 8;
5     let a16: i16 = 128;
6     let a32: i32 = 32_768;
7     let a64: i64 = 2_147_483_648;
8
9     // the smallest negative values that need these types
10     let c8: i8 = -9;
11     let c16: i16 = -129;
12     let c32: i32 = -32_769;
13     let c64: i64 = -2_147_483_649;
14
15     fn id_i8(n: i8) -> i8 { n }
16     fn id_i16(n: i16) -> i16 { n }
17     fn id_i32(n: i32) -> i32 { n }
18     fn id_i64(n: i64) -> i64 { n }
19
20     // the smallest values that need these types
21     let b8: u8 = 16;
22     let b16: u16 = 256;
23     let b32: u32 = 65_536;
24     let b64: u64 = 4_294_967_296;
25
26     fn id_u8(n: u8) -> u8 { n }
27     fn id_u16(n: u16) -> u16 { n }
28     fn id_u32(n: u32) -> u32 { n }
29     fn id_u64(n: u64) -> u64 { n }
30
31     id_i8(a8); // ok
32     id_i8(a16);
33     //~^ ERROR mismatched types
34     //~| expected i8, found i16
35     id_i8(a32);
36     //~^ ERROR mismatched types
37     //~| expected i8, found i32
38     id_i8(a64);
39     //~^ ERROR mismatched types
40     //~| expected i8, found i64
41
42     id_i16(a8);
43     //~^ ERROR mismatched types
44     //~| expected i16, found i8
45     id_i16(a16); // ok
46     id_i16(a32);
47     //~^ ERROR mismatched types
48     //~| expected i16, found i32
49     id_i16(a64);
50     //~^ ERROR mismatched types
51     //~| expected i16, found i64
52
53     id_i32(a8);
54     //~^ ERROR mismatched types
55     //~| expected i32, found i8
56     id_i32(a16);
57     //~^ ERROR mismatched types
58     //~| expected i32, found i16
59     id_i32(a32); // ok
60     id_i32(a64);
61     //~^ ERROR mismatched types
62     //~| expected i32, found i64
63
64     id_i64(a8);
65     //~^ ERROR mismatched types
66     //~| expected i64, found i8
67     id_i64(a16);
68     //~^ ERROR mismatched types
69     //~| expected i64, found i16
70     id_i64(a32);
71     //~^ ERROR mismatched types
72     //~| expected i64, found i32
73     id_i64(a64); // ok
74
75     id_i8(c8); // ok
76     id_i8(c16);
77     //~^ ERROR mismatched types
78     //~| expected i8, found i16
79     id_i8(c32);
80     //~^ ERROR mismatched types
81     //~| expected i8, found i32
82     id_i8(c64);
83     //~^ ERROR mismatched types
84     //~| expected i8, found i64
85
86     id_i16(c8);
87     //~^ ERROR mismatched types
88     //~| expected i16, found i8
89     id_i16(c16); // ok
90     id_i16(c32);
91     //~^ ERROR mismatched types
92     //~| expected i16, found i32
93     id_i16(c64);
94     //~^ ERROR mismatched types
95     //~| expected i16, found i64
96
97     id_i32(c8);
98     //~^ ERROR mismatched types
99     //~| expected i32, found i8
100     id_i32(c16);
101     //~^ ERROR mismatched types
102     //~| expected i32, found i16
103     id_i32(c32); // ok
104     id_i32(c64);
105     //~^ ERROR mismatched types
106     //~| expected i32, found i64
107
108     id_i64(a8);
109     //~^ ERROR mismatched types
110     //~| expected i64, found i8
111     id_i64(a16);
112     //~^ ERROR mismatched types
113     //~| expected i64, found i16
114     id_i64(a32);
115     //~^ ERROR mismatched types
116     //~| expected i64, found i32
117     id_i64(a64); // ok
118
119     id_u8(b8); // ok
120     id_u8(b16);
121     //~^ ERROR mismatched types
122     //~| expected u8, found u16
123     id_u8(b32);
124     //~^ ERROR mismatched types
125     //~| expected u8, found u32
126     id_u8(b64);
127     //~^ ERROR mismatched types
128     //~| expected u8, found u64
129
130     id_u16(b8);
131     //~^ ERROR mismatched types
132     //~| expected u16, found u8
133     id_u16(b16); // ok
134     id_u16(b32);
135     //~^ ERROR mismatched types
136     //~| expected u16, found u32
137     id_u16(b64);
138     //~^ ERROR mismatched types
139     //~| expected u16, found u64
140
141     id_u32(b8);
142     //~^ ERROR mismatched types
143     //~| expected u32, found u8
144     id_u32(b16);
145     //~^ ERROR mismatched types
146     //~| expected u32, found u16
147     id_u32(b32); // ok
148     id_u32(b64);
149     //~^ ERROR mismatched types
150     //~| expected u32, found u64
151
152     id_u64(b8);
153     //~^ ERROR mismatched types
154     //~| expected u64, found u8
155     id_u64(b16);
156     //~^ ERROR mismatched types
157     //~| expected u64, found u16
158     id_u64(b32);
159     //~^ ERROR mismatched types
160     //~| expected u64, found u32
161     id_u64(b64); // ok
162 }