diff --git a/tests/ui/range_plus_minus_one.rs b/tests/ui/range_plus_minus_one.rs new file mode 100644 index 00000000000..dce81634876 --- /dev/null +++ b/tests/ui/range_plus_minus_one.rs @@ -0,0 +1,34 @@ +#![feature(inclusive_range_syntax)] + +fn f() -> usize { + 42 +} + +#[warn(range_plus_one)] +fn main() { + for _ in 0..2 { } + for _ in 0..=2 { } + + for _ in 0..3+1 { } + for _ in 0..=3+1 { } + + for _ in 0..1+5 { } + for _ in 0..=1+5 { } + + for _ in 1..1+1 { } + for _ in 1..=1+1 { } + + for _ in 0..13+13 { } + for _ in 0..=13-7 { } + + for _ in 0..(1+f()) { } + for _ in 0..=(1+f()) { } + + let _ = ..11-1; + let _ = ..=11-1; + let _ = ..=(11-1); + let _ = (f()+1)..(f()+1); + + let mut vec: Vec<()> = std::vec::Vec::new(); + vec.drain(..); +} diff --git a/tests/ui/range_plus_minus_one.stderr b/tests/ui/range_plus_minus_one.stderr new file mode 100644 index 00000000000..a2a3ae6077f --- /dev/null +++ b/tests/ui/range_plus_minus_one.stderr @@ -0,0 +1,67 @@ +error: an inclusive range would be more readable + --> $DIR/range_plus_minus_one.rs:12:14 + | +12 | for _ in 0..3+1 { } + | ------ + | | + | help: use: `0..=3` + | in this macro invocation + | + = note: `-D range-plus-one` implied by `-D warnings` + +error: an inclusive range would be more readable + --> $DIR/range_plus_minus_one.rs:15:14 + | +15 | for _ in 0..1+5 { } + | ------ + | | + | help: use: `0..=5` + | in this macro invocation + +error: an inclusive range would be more readable + --> $DIR/range_plus_minus_one.rs:18:14 + | +18 | for _ in 1..1+1 { } + | ------ + | | + | help: use: `1..=1` + | in this macro invocation + +error: an inclusive range would be more readable + --> $DIR/range_plus_minus_one.rs:24:14 + | +24 | for _ in 0..(1+f()) { } + | ---------- + | | + | help: use: `0..=f()` + | in this macro invocation + +error: an exclusive range would be more readable + --> $DIR/range_plus_minus_one.rs:28:13 + | +28 | let _ = ..=11-1; + | ------- + | | + | help: use: `..11` + | in this macro invocation + | + = note: `-D range-minus-one` implied by `-D warnings` + +error: an exclusive range would be more readable + --> $DIR/range_plus_minus_one.rs:29:13 + | +29 | let _ = ..=(11-1); + | --------- + | | + | help: use: `..11` + | in this macro invocation + +error: an inclusive range would be more readable + --> $DIR/range_plus_minus_one.rs:30:13 + | +30 | let _ = (f()+1)..(f()+1); + | ---------------- + | | + | help: use: `(f()+1)..=f()` + | in this macro invocation +