]> git.lizzy.rs Git - rust.git/blob - tests/ui/arithmetic_side_effects.rs
Merge remote-tracking branch 'upstream/auto' into rustup
[rust.git] / tests / ui / arithmetic_side_effects.rs
1 #![allow(clippy::assign_op_pattern, clippy::unnecessary_owned_empty_strings)]
2 #![feature(inline_const, saturating_int_impl)]
3 #![warn(clippy::arithmetic_side_effects)]
4
5 use core::num::{Saturating, Wrapping};
6
7 pub fn hard_coded_allowed() {
8     let _ = 1f32 + 1f32;
9     let _ = 1f64 + 1f64;
10
11     let _ = Saturating(0u32) + Saturating(0u32);
12     let _ = String::new() + "";
13     let _ = Wrapping(0u32) + Wrapping(0u32);
14
15     let saturating: Saturating<u32> = Saturating(0u32);
16     let string: String = String::new();
17     let wrapping: Wrapping<u32> = Wrapping(0u32);
18
19     let inferred_saturating = saturating + saturating;
20     let inferred_string = string + "";
21     let inferred_wrapping = wrapping + wrapping;
22
23     let _ = inferred_saturating + inferred_saturating;
24     let _ = inferred_string + "";
25     let _ = inferred_wrapping + inferred_wrapping;
26 }
27
28 #[rustfmt::skip]
29 pub fn non_overflowing_ops() {
30     const _: i32 = { let mut n = 1; n += 1; n };
31     let _ = const { let mut n = 1; n += 1; n };
32
33     const _: i32 = { let mut n = 1; n = n + 1; n };
34     let _ = const { let mut n = 1; n = n + 1; n };
35
36     const _: i32 = { let mut n = 1; n = 1 + n; n };
37     let _ = const { let mut n = 1; n = 1 + n; n };
38
39     const _: i32 = 1 + 1;
40     let _ = 1 + 1;
41     let _ = const { 1 + 1 };
42
43     let mut _a = 1;
44     _a *= 1;
45     _a /= 1;
46 }
47
48 #[rustfmt::skip]
49 pub fn overflowing_ops() {
50     let mut _a = 1; _a += 1;
51
52     let mut _b = 1; _b = _b + 1;
53
54     let mut _c = 1; _c = 1 + _c;
55 }
56
57 fn main() {}