]> git.lizzy.rs Git - rust.git/blob - src/test/ui/integer-literal-suffix-inference.rs
Auto merge of #54720 - davidtwco:issue-51191, r=nikomatsakis
[rust.git] / src / test / ui / integer-literal-suffix-inference.rs
1 // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 fn main() {
12
13     // the smallest positive values that need these types
14     let a8: i8 = 8;
15     let a16: i16 = 128;
16     let a32: i32 = 32_768;
17     let a64: i64 = 2_147_483_648;
18
19     // the smallest negative values that need these types
20     let c8: i8 = -9;
21     let c16: i16 = -129;
22     let c32: i32 = -32_769;
23     let c64: i64 = -2_147_483_649;
24
25     fn id_i8(n: i8) -> i8 { n }
26     fn id_i16(n: i16) -> i16 { n }
27     fn id_i32(n: i32) -> i32 { n }
28     fn id_i64(n: i64) -> i64 { n }
29
30     // the smallest values that need these types
31     let b8: u8 = 16;
32     let b16: u16 = 256;
33     let b32: u32 = 65_536;
34     let b64: u64 = 4_294_967_296;
35
36     fn id_u8(n: u8) -> u8 { n }
37     fn id_u16(n: u16) -> u16 { n }
38     fn id_u32(n: u32) -> u32 { n }
39     fn id_u64(n: u64) -> u64 { n }
40
41     id_i8(a8); // ok
42     id_i8(a16);
43     //~^ ERROR mismatched types
44     //~| expected i8, found i16
45     id_i8(a32);
46     //~^ ERROR mismatched types
47     //~| expected i8, found i32
48     id_i8(a64);
49     //~^ ERROR mismatched types
50     //~| expected i8, found i64
51
52     id_i16(a8);
53     //~^ ERROR mismatched types
54     //~| expected i16, found i8
55     id_i16(a16); // ok
56     id_i16(a32);
57     //~^ ERROR mismatched types
58     //~| expected i16, found i32
59     id_i16(a64);
60     //~^ ERROR mismatched types
61     //~| expected i16, found i64
62
63     id_i32(a8);
64     //~^ ERROR mismatched types
65     //~| expected i32, found i8
66     id_i32(a16);
67     //~^ ERROR mismatched types
68     //~| expected i32, found i16
69     id_i32(a32); // ok
70     id_i32(a64);
71     //~^ ERROR mismatched types
72     //~| expected i32, found i64
73
74     id_i64(a8);
75     //~^ ERROR mismatched types
76     //~| expected i64, found i8
77     id_i64(a16);
78     //~^ ERROR mismatched types
79     //~| expected i64, found i16
80     id_i64(a32);
81     //~^ ERROR mismatched types
82     //~| expected i64, found i32
83     id_i64(a64); // ok
84
85     id_i8(c8); // ok
86     id_i8(c16);
87     //~^ ERROR mismatched types
88     //~| expected i8, found i16
89     id_i8(c32);
90     //~^ ERROR mismatched types
91     //~| expected i8, found i32
92     id_i8(c64);
93     //~^ ERROR mismatched types
94     //~| expected i8, found i64
95
96     id_i16(c8);
97     //~^ ERROR mismatched types
98     //~| expected i16, found i8
99     id_i16(c16); // ok
100     id_i16(c32);
101     //~^ ERROR mismatched types
102     //~| expected i16, found i32
103     id_i16(c64);
104     //~^ ERROR mismatched types
105     //~| expected i16, found i64
106
107     id_i32(c8);
108     //~^ ERROR mismatched types
109     //~| expected i32, found i8
110     id_i32(c16);
111     //~^ ERROR mismatched types
112     //~| expected i32, found i16
113     id_i32(c32); // ok
114     id_i32(c64);
115     //~^ ERROR mismatched types
116     //~| expected i32, found i64
117
118     id_i64(a8);
119     //~^ ERROR mismatched types
120     //~| expected i64, found i8
121     id_i64(a16);
122     //~^ ERROR mismatched types
123     //~| expected i64, found i16
124     id_i64(a32);
125     //~^ ERROR mismatched types
126     //~| expected i64, found i32
127     id_i64(a64); // ok
128
129     id_u8(b8); // ok
130     id_u8(b16);
131     //~^ ERROR mismatched types
132     //~| expected u8, found u16
133     id_u8(b32);
134     //~^ ERROR mismatched types
135     //~| expected u8, found u32
136     id_u8(b64);
137     //~^ ERROR mismatched types
138     //~| expected u8, found u64
139
140     id_u16(b8);
141     //~^ ERROR mismatched types
142     //~| expected u16, found u8
143     id_u16(b16); // ok
144     id_u16(b32);
145     //~^ ERROR mismatched types
146     //~| expected u16, found u32
147     id_u16(b64);
148     //~^ ERROR mismatched types
149     //~| expected u16, found u64
150
151     id_u32(b8);
152     //~^ ERROR mismatched types
153     //~| expected u32, found u8
154     id_u32(b16);
155     //~^ ERROR mismatched types
156     //~| expected u32, found u16
157     id_u32(b32); // ok
158     id_u32(b64);
159     //~^ ERROR mismatched types
160     //~| expected u32, found u64
161
162     id_u64(b8);
163     //~^ ERROR mismatched types
164     //~| expected u64, found u8
165     id_u64(b16);
166     //~^ ERROR mismatched types
167     //~| expected u64, found u16
168     id_u64(b32);
169     //~^ ERROR mismatched types
170     //~| expected u64, found u32
171     id_u64(b64); // ok
172 }