]> git.lizzy.rs Git - rust.git/blob - src/test/ui/integer-literal-suffix-inference.rs
Rollup merge of #88090 - nbdd0121:inference, r=nikomatsakis
[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     fn id_isize(n: isize) -> isize { n }
20
21     // the smallest values that need these types
22     let b8: u8 = 16;
23     let b16: u16 = 256;
24     let b32: u32 = 65_536;
25     let b64: u64 = 4_294_967_296;
26
27     fn id_u8(n: u8) -> u8 { n }
28     fn id_u16(n: u16) -> u16 { n }
29     fn id_u32(n: u32) -> u32 { n }
30     fn id_u64(n: u64) -> u64 { n }
31     fn id_usize(n: usize) -> usize { n }
32
33     // Values for testing *size
34     let asize: isize = 1;
35     let bsize: usize = 3;
36
37     id_i8(a8); // ok
38     id_i8(a16);
39     //~^ ERROR mismatched types
40     //~| expected `i8`, found `i16`
41     id_i8(a32);
42     //~^ ERROR mismatched types
43     //~| expected `i8`, found `i32`
44     id_i8(a64);
45     //~^ ERROR mismatched types
46     //~| expected `i8`, found `i64`
47     id_i8(asize);
48     //~^ ERROR mismatched types
49     //~| expected `i8`, found `isize`
50
51     id_i16(a8);
52     //~^ ERROR mismatched types
53     //~| expected `i16`, found `i8`
54     id_i16(a16); // ok
55     id_i16(a32);
56     //~^ ERROR mismatched types
57     //~| expected `i16`, found `i32`
58     id_i16(a64);
59     //~^ ERROR mismatched types
60     //~| expected `i16`, found `i64`
61     id_i16(asize);
62     //~^ ERROR mismatched types
63     //~| expected `i16`, found `isize`
64
65     id_i32(a8);
66     //~^ ERROR mismatched types
67     //~| expected `i32`, found `i8`
68     id_i32(a16);
69     //~^ ERROR mismatched types
70     //~| expected `i32`, found `i16`
71     id_i32(a32); // ok
72     id_i32(a64);
73     //~^ ERROR mismatched types
74     //~| expected `i32`, found `i64`
75     id_i32(asize);
76     //~^ ERROR mismatched types
77     //~| expected `i32`, found `isize`
78
79     id_i64(a8);
80     //~^ ERROR mismatched types
81     //~| expected `i64`, found `i8`
82     id_i64(a16);
83     //~^ ERROR mismatched types
84     //~| expected `i64`, found `i16`
85     id_i64(a32);
86     //~^ ERROR mismatched types
87     //~| expected `i64`, found `i32`
88     id_i64(a64); // ok
89     id_i64(asize);
90     //~^ ERROR mismatched types
91     //~| expected `i64`, found `isize`
92
93     id_isize(a8);
94     //~^ ERROR mismatched types
95     //~| expected `isize`, found `i8`
96     id_isize(a16);
97     //~^ ERROR mismatched types
98     //~| expected `isize`, found `i16`
99     id_isize(a32);
100     //~^ ERROR mismatched types
101     //~| expected `isize`, found `i32`
102     id_isize(a64);
103     //~^ ERROR mismatched types
104     //~| expected `isize`, found `i64`
105     id_isize(asize); //ok
106
107     id_i8(c8); // ok
108     id_i8(c16);
109     //~^ ERROR mismatched types
110     //~| expected `i8`, found `i16`
111     id_i8(c32);
112     //~^ ERROR mismatched types
113     //~| expected `i8`, found `i32`
114     id_i8(c64);
115     //~^ ERROR mismatched types
116     //~| expected `i8`, found `i64`
117
118     id_i16(c8);
119     //~^ ERROR mismatched types
120     //~| expected `i16`, found `i8`
121     id_i16(c16); // ok
122     id_i16(c32);
123     //~^ ERROR mismatched types
124     //~| expected `i16`, found `i32`
125     id_i16(c64);
126     //~^ ERROR mismatched types
127     //~| expected `i16`, found `i64`
128
129     id_i32(c8);
130     //~^ ERROR mismatched types
131     //~| expected `i32`, found `i8`
132     id_i32(c16);
133     //~^ ERROR mismatched types
134     //~| expected `i32`, found `i16`
135     id_i32(c32); // ok
136     id_i32(c64);
137     //~^ ERROR mismatched types
138     //~| expected `i32`, found `i64`
139
140     id_i64(a8);
141     //~^ ERROR mismatched types
142     //~| expected `i64`, found `i8`
143     id_i64(a16);
144     //~^ ERROR mismatched types
145     //~| expected `i64`, found `i16`
146     id_i64(a32);
147     //~^ ERROR mismatched types
148     //~| expected `i64`, found `i32`
149     id_i64(a64); // ok
150
151     id_u8(b8); // ok
152     id_u8(b16);
153     //~^ ERROR mismatched types
154     //~| expected `u8`, found `u16`
155     id_u8(b32);
156     //~^ ERROR mismatched types
157     //~| expected `u8`, found `u32`
158     id_u8(b64);
159     //~^ ERROR mismatched types
160     //~| expected `u8`, found `u64`
161     id_u8(bsize);
162     //~^ ERROR mismatched types
163     //~| expected `u8`, found `usize`
164
165     id_u16(b8);
166     //~^ ERROR mismatched types
167     //~| expected `u16`, found `u8`
168     id_u16(b16); // ok
169     id_u16(b32);
170     //~^ ERROR mismatched types
171     //~| expected `u16`, found `u32`
172     id_u16(b64);
173     //~^ ERROR mismatched types
174     //~| expected `u16`, found `u64`
175     id_u16(bsize);
176     //~^ ERROR mismatched types
177     //~| expected `u16`, found `usize`
178
179     id_u32(b8);
180     //~^ ERROR mismatched types
181     //~| expected `u32`, found `u8`
182     id_u32(b16);
183     //~^ ERROR mismatched types
184     //~| expected `u32`, found `u16`
185     id_u32(b32); // ok
186     id_u32(b64);
187     //~^ ERROR mismatched types
188     //~| expected `u32`, found `u64`
189     id_u32(bsize);
190     //~^ ERROR mismatched types
191     //~| expected `u32`, found `usize`
192
193     id_u64(b8);
194     //~^ ERROR mismatched types
195     //~| expected `u64`, found `u8`
196     id_u64(b16);
197     //~^ ERROR mismatched types
198     //~| expected `u64`, found `u16`
199     id_u64(b32);
200     //~^ ERROR mismatched types
201     //~| expected `u64`, found `u32`
202     id_u64(b64); // ok
203     id_u64(bsize);
204     //~^ ERROR mismatched types
205     //~| expected `u64`, found `usize`
206
207     id_usize(b8);
208     //~^ ERROR mismatched types
209     //~| expected `usize`, found `u8`
210     id_usize(b16);
211     //~^ ERROR mismatched types
212     //~| expected `usize`, found `u16`
213     id_usize(b32);
214     //~^ ERROR mismatched types
215     //~| expected `usize`, found `u32`
216     id_usize(b64);
217     //~^ ERROR mismatched types
218     //~| expected `usize`, found `u64`
219     id_usize(bsize); //ok
220 }