Skip to content

Commit 35882b0

Browse files
Cameron SteffenCameron Steffen
Cameron Steffen
authored and
Cameron Steffen
committed
move get_unwrap tests
1 parent 90b428e commit 35882b0

File tree

4 files changed

+110
-106
lines changed

4 files changed

+110
-106
lines changed

tests/ui/get_unwrap.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#![allow(unused_mut)]
2+
3+
use std::collections::BTreeMap;
4+
use std::collections::HashMap;
5+
use std::collections::VecDeque;
6+
use std::iter::FromIterator;
7+
8+
struct GetFalsePositive {
9+
arr: [u32; 3],
10+
}
11+
12+
impl GetFalsePositive {
13+
fn get(&self, pos: usize) -> Option<&u32> { self.arr.get(pos) }
14+
fn get_mut(&mut self, pos: usize) -> Option<&mut u32> { self.arr.get_mut(pos) }
15+
}
16+
17+
fn main() {
18+
let mut boxed_slice: Box<[u8]> = Box::new([0, 1, 2, 3]);
19+
let mut some_slice = &mut [0, 1, 2, 3];
20+
let mut some_vec = vec![0, 1, 2, 3];
21+
let mut some_vecdeque: VecDeque<_> = some_vec.iter().cloned().collect();
22+
let mut some_hashmap: HashMap<u8, char> = HashMap::from_iter(vec![(1, 'a'), (2, 'b')]);
23+
let mut some_btreemap: BTreeMap<u8, char> = BTreeMap::from_iter(vec![(1, 'a'), (2, 'b')]);
24+
let mut false_positive = GetFalsePositive { arr: [0, 1, 2] };
25+
26+
{ // Test `get().unwrap()`
27+
let _ = boxed_slice.get(1).unwrap();
28+
let _ = some_slice.get(0).unwrap();
29+
let _ = some_vec.get(0).unwrap();
30+
let _ = some_vecdeque.get(0).unwrap();
31+
let _ = some_hashmap.get(&1).unwrap();
32+
let _ = some_btreemap.get(&1).unwrap();
33+
let _ = false_positive.get(0).unwrap();
34+
}
35+
36+
{ // Test `get_mut().unwrap()`
37+
*boxed_slice.get_mut(0).unwrap() = 1;
38+
*some_slice.get_mut(0).unwrap() = 1;
39+
*some_vec.get_mut(0).unwrap() = 1;
40+
*some_vecdeque.get_mut(0).unwrap() = 1;
41+
// Check false positives
42+
*some_hashmap.get_mut(&1).unwrap() = 'b';
43+
*some_btreemap.get_mut(&1).unwrap() = 'b';
44+
*false_positive.get_mut(0).unwrap() = 1;
45+
}
46+
}

tests/ui/get_unwrap.stderr

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
error: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise
2+
--> $DIR/get_unwrap.rs:27:17
3+
|
4+
27 | let _ = boxed_slice.get(1).unwrap();
5+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&boxed_slice[1]`
6+
|
7+
= note: `-D get-unwrap` implied by `-D warnings`
8+
9+
error: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise
10+
--> $DIR/get_unwrap.rs:28:17
11+
|
12+
28 | let _ = some_slice.get(0).unwrap();
13+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_slice[0]`
14+
15+
error: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise
16+
--> $DIR/get_unwrap.rs:29:17
17+
|
18+
29 | let _ = some_vec.get(0).unwrap();
19+
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_vec[0]`
20+
21+
error: called `.get().unwrap()` on a VecDeque. Using `[]` is more clear and more concise
22+
--> $DIR/get_unwrap.rs:30:17
23+
|
24+
30 | let _ = some_vecdeque.get(0).unwrap();
25+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_vecdeque[0]`
26+
27+
error: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise
28+
--> $DIR/get_unwrap.rs:31:17
29+
|
30+
31 | let _ = some_hashmap.get(&1).unwrap();
31+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_hashmap[&1]`
32+
33+
error: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise
34+
--> $DIR/get_unwrap.rs:32:17
35+
|
36+
32 | let _ = some_btreemap.get(&1).unwrap();
37+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_btreemap[&1]`
38+
39+
error: called `.get_mut().unwrap()` on a slice. Using `[]` is more clear and more concise
40+
--> $DIR/get_unwrap.rs:37:10
41+
|
42+
37 | *boxed_slice.get_mut(0).unwrap() = 1;
43+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut boxed_slice[0]`
44+
45+
error: called `.get_mut().unwrap()` on a slice. Using `[]` is more clear and more concise
46+
--> $DIR/get_unwrap.rs:38:10
47+
|
48+
38 | *some_slice.get_mut(0).unwrap() = 1;
49+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut some_slice[0]`
50+
51+
error: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise
52+
--> $DIR/get_unwrap.rs:39:10
53+
|
54+
39 | *some_vec.get_mut(0).unwrap() = 1;
55+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut some_vec[0]`
56+
57+
error: called `.get_mut().unwrap()` on a VecDeque. Using `[]` is more clear and more concise
58+
--> $DIR/get_unwrap.rs:40:10
59+
|
60+
40 | *some_vecdeque.get_mut(0).unwrap() = 1;
61+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut some_vecdeque[0]`
62+

tests/ui/methods.rs

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -349,48 +349,6 @@ fn iter_skip_next() {
349349
let _ = foo.filter().skip(42).next();
350350
}
351351

352-
struct GetFalsePositive {
353-
arr: [u32; 3],
354-
}
355-
356-
impl GetFalsePositive {
357-
fn get(&self, pos: usize) -> Option<&u32> { self.arr.get(pos) }
358-
fn get_mut(&mut self, pos: usize) -> Option<&mut u32> { self.arr.get_mut(pos) }
359-
}
360-
361-
/// Checks implementation of `GET_UNWRAP` lint
362-
fn get_unwrap() {
363-
let mut boxed_slice: Box<[u8]> = Box::new([0, 1, 2, 3]);
364-
let mut some_slice = &mut [0, 1, 2, 3];
365-
let mut some_vec = vec![0, 1, 2, 3];
366-
let mut some_vecdeque: VecDeque<_> = some_vec.iter().cloned().collect();
367-
let mut some_hashmap: HashMap<u8, char> = HashMap::from_iter(vec![(1, 'a'), (2, 'b')]);
368-
let mut some_btreemap: BTreeMap<u8, char> = BTreeMap::from_iter(vec![(1, 'a'), (2, 'b')]);
369-
let mut false_positive = GetFalsePositive { arr: [0, 1, 2] };
370-
371-
{ // Test `get().unwrap()`
372-
let _ = boxed_slice.get(1).unwrap();
373-
let _ = some_slice.get(0).unwrap();
374-
let _ = some_vec.get(0).unwrap();
375-
let _ = some_vecdeque.get(0).unwrap();
376-
let _ = some_hashmap.get(&1).unwrap();
377-
let _ = some_btreemap.get(&1).unwrap();
378-
let _ = false_positive.get(0).unwrap();
379-
}
380-
381-
{ // Test `get_mut().unwrap()`
382-
*boxed_slice.get_mut(0).unwrap() = 1;
383-
*some_slice.get_mut(0).unwrap() = 1;
384-
*some_vec.get_mut(0).unwrap() = 1;
385-
*some_vecdeque.get_mut(0).unwrap() = 1;
386-
// Check false positives
387-
*some_hashmap.get_mut(&1).unwrap() = 'b';
388-
*some_btreemap.get_mut(&1).unwrap() = 'b';
389-
*false_positive.get_mut(0).unwrap() = 1;
390-
}
391-
}
392-
393-
394352
#[allow(similar_names)]
395353
fn main() {
396354
let opt = Some(0);

tests/ui/methods.stderr

Lines changed: 2 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -437,72 +437,10 @@ error: called `skip(x).next()` on an iterator. This is more succinctly expressed
437437
346 | let _ = &some_vec[..].iter().skip(3).next();
438438
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
439439

440-
error: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise
441-
--> $DIR/methods.rs:372:17
442-
|
443-
372 | let _ = boxed_slice.get(1).unwrap();
444-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&boxed_slice[1]`
445-
|
446-
= note: `-D get-unwrap` implied by `-D warnings`
447-
448-
error: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise
449-
--> $DIR/methods.rs:373:17
450-
|
451-
373 | let _ = some_slice.get(0).unwrap();
452-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_slice[0]`
453-
454-
error: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise
455-
--> $DIR/methods.rs:374:17
456-
|
457-
374 | let _ = some_vec.get(0).unwrap();
458-
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_vec[0]`
459-
460-
error: called `.get().unwrap()` on a VecDeque. Using `[]` is more clear and more concise
461-
--> $DIR/methods.rs:375:17
462-
|
463-
375 | let _ = some_vecdeque.get(0).unwrap();
464-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_vecdeque[0]`
465-
466-
error: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise
467-
--> $DIR/methods.rs:376:17
468-
|
469-
376 | let _ = some_hashmap.get(&1).unwrap();
470-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_hashmap[&1]`
471-
472-
error: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise
473-
--> $DIR/methods.rs:377:17
474-
|
475-
377 | let _ = some_btreemap.get(&1).unwrap();
476-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&some_btreemap[&1]`
477-
478-
error: called `.get_mut().unwrap()` on a slice. Using `[]` is more clear and more concise
479-
--> $DIR/methods.rs:382:10
480-
|
481-
382 | *boxed_slice.get_mut(0).unwrap() = 1;
482-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut boxed_slice[0]`
483-
484-
error: called `.get_mut().unwrap()` on a slice. Using `[]` is more clear and more concise
485-
--> $DIR/methods.rs:383:10
486-
|
487-
383 | *some_slice.get_mut(0).unwrap() = 1;
488-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut some_slice[0]`
489-
490-
error: called `.get_mut().unwrap()` on a Vec. Using `[]` is more clear and more concise
491-
--> $DIR/methods.rs:384:10
492-
|
493-
384 | *some_vec.get_mut(0).unwrap() = 1;
494-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut some_vec[0]`
495-
496-
error: called `.get_mut().unwrap()` on a VecDeque. Using `[]` is more clear and more concise
497-
--> $DIR/methods.rs:385:10
498-
|
499-
385 | *some_vecdeque.get_mut(0).unwrap() = 1;
500-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mut some_vecdeque[0]`
501-
502440
error: used unwrap() on an Option value. If you don't want to handle the None case gracefully, consider using expect() to provide a better panic message
503-
--> $DIR/methods.rs:397:13
441+
--> $DIR/methods.rs:355:13
504442
|
505-
397 | let _ = opt.unwrap();
443+
355 | let _ = opt.unwrap();
506444
| ^^^^^^^^^^^^
507445
|
508446
= note: `-D option-unwrap-used` implied by `-D warnings`

0 commit comments

Comments
 (0)