Skip to content

Commit f71c55a

Browse files
committed
add more test cases
1 parent 9b8c3e0 commit f71c55a

4 files changed

+55
-1
lines changed

tests/ui/missing_asserts_for_indexing.fixed

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,17 @@ fn index_different_slices_one_wrong_len(v1: &[u8], v2: &[u8]) {
107107
let _ = v2[5] + v2[15];
108108
}
109109

110+
fn side_effect() -> &'static [u8] {
111+
&[]
112+
}
113+
114+
fn index_side_effect_expr() {
115+
let _ = side_effect()[0] + side_effect()[1];
116+
}
117+
118+
// ok, single access for different slices
119+
fn index_different_slice_in_same_expr(v1: &[u8], v2: &[u8]) {
120+
let _ = v1[0] + v2[1];
121+
}
122+
110123
fn main() {}

tests/ui/missing_asserts_for_indexing.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,4 +107,17 @@ fn index_different_slices_one_wrong_len(v1: &[u8], v2: &[u8]) {
107107
let _ = v2[5] + v2[15];
108108
}
109109

110+
fn side_effect() -> &'static [u8] {
111+
&[]
112+
}
113+
114+
fn index_side_effect_expr() {
115+
let _ = side_effect()[0] + side_effect()[1];
116+
}
117+
118+
// ok, single access for different slices
119+
fn index_different_slice_in_same_expr(v1: &[u8], v2: &[u8]) {
120+
let _ = v1[0] + v2[1];
121+
}
122+
110123
fn main() {}

tests/ui/missing_asserts_for_indexing_unfixable.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,13 @@ fn index_different_slices2(v1: &[u8], v2: &[u8]) {
3131
let _ = v2[5] + v2[15];
3232
}
3333

34+
struct Foo<'a> {
35+
v: &'a [u8],
36+
}
37+
38+
fn index_struct_field(f: &Foo<'_>) {
39+
//~^ ERROR missing assertion on `f.v.len()`
40+
let _ = f.v[0] + f.v[1];
41+
}
42+
3443
fn main() {}

tests/ui/missing_asserts_for_indexing_unfixable.stderr

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,5 +138,24 @@ LL | let _ = v2[5] + v2[15];
138138
| ^^^^^^
139139
= note: asserting the length before indexing will elide bounds checks
140140

141-
error: aborting due to 6 previous errors
141+
error: indexing into a slice multiple times without an `assert`
142+
--> $DIR/missing_asserts_for_indexing_unfixable.rs:40:13
143+
|
144+
LL | let _ = f.v[0] + f.v[1];
145+
| ^^^^^^^^^^^^^^^
146+
|
147+
= help: consider asserting the length before indexing: `assert!(f.v.len() > 1);`
148+
note: slice indexed here
149+
--> $DIR/missing_asserts_for_indexing_unfixable.rs:40:13
150+
|
151+
LL | let _ = f.v[0] + f.v[1];
152+
| ^^^^^^
153+
note: slice indexed here
154+
--> $DIR/missing_asserts_for_indexing_unfixable.rs:40:22
155+
|
156+
LL | let _ = f.v[0] + f.v[1];
157+
| ^^^^^^
158+
= note: asserting the length before indexing will elide bounds checks
159+
160+
error: aborting due to 7 previous errors
142161

0 commit comments

Comments
 (0)