File tree Expand file tree Collapse file tree 3 files changed +7
-3
lines changed Expand file tree Collapse file tree 3 files changed +7
-3
lines changed Original file line number Diff line number Diff line change @@ -32,7 +32,7 @@ refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
32
32
refs/heads/beta: 2d00dc3b85aaf81caa3a4e5764c5e185a4dd0a7c
33
33
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
34
34
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
35
- refs/heads/tmp: 0ec3183df8d0cdccc735fa6572d664b43dbb5e31
35
+ refs/heads/tmp: c654a07d29c77b5a023cb9d36dfc61811349f64e
36
36
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f
37
37
refs/tags/homu-tmp: 704c2ee730d2e948d11a2edd77e3f35de8329a6e
38
38
refs/heads/gate: 97c84447b65164731087ea82685580cc81424412
Original file line number Diff line number Diff line change @@ -203,10 +203,12 @@ impl LintPass for TypeLimits {
203
203
} else {
204
204
t
205
205
} ;
206
- let ( min , max) = int_ty_range ( int_type) ;
206
+ let ( _ , max) = int_ty_range ( int_type) ;
207
207
let negative = self . negated_expr_id == e. id ;
208
208
209
- if ( negative && min != i64:: MIN && v > -min as u64 ) ||
209
+ // Detect literal value out of range [min, max] inclusive
210
+ // avoiding use of -min to prevent overflow/panic
211
+ if ( negative && v > max as u64 + 1 ) ||
210
212
( !negative && v > max as u64 ) {
211
213
cx. span_lint ( OVERFLOWING_LITERALS , e. span ,
212
214
& * format ! ( "literal out of range for {:?}" , t) ) ;
Original file line number Diff line number Diff line change @@ -52,6 +52,8 @@ fn main() {
52
52
let x = 9223372036854775808_i64 ; //~ error: literal out of range for i64
53
53
let x = -9223372036854775808_i64 ; // should be OK
54
54
let x = 18446744073709551615_i64 ; //~ error: literal out of range for i64
55
+ let x: i64 = -9223372036854775809 ; //~ error: literal out of range for i64
56
+ let x = -9223372036854775809_i64 ; //~ error: literal out of range for i64
55
57
56
58
let x = -3.40282348e+38_f32 ; //~ error: literal out of range for f32
57
59
let x = 3.40282348e+38_f32 ; //~ error: literal out of range for f32
You can’t perform that action at this time.
0 commit comments