Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit d0ddbb9

Browse files
committed
Extend testing of rc_buffer lint
1 parent 2dd7175 commit d0ddbb9

File tree

6 files changed

+122
-37
lines changed

6 files changed

+122
-37
lines changed

tests/ui/rc_buffer.rs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
1+
#![warn(clippy::rc_buffer)]
2+
3+
use std::cell::RefCell;
14
use std::ffi::OsString;
25
use std::path::PathBuf;
36
use std::rc::Rc;
47

5-
#[warn(clippy::rc_buffer)]
68
struct S {
7-
a: Rc<String>,
8-
b: Rc<PathBuf>,
9-
c: Rc<Vec<u8>>,
10-
d: Rc<OsString>,
9+
// triggers lint
10+
bad1: Rc<String>,
11+
bad2: Rc<PathBuf>,
12+
bad3: Rc<Vec<u8>>,
13+
bad4: Rc<OsString>,
14+
// does not trigger lint
15+
good1: Rc<RefCell<String>>,
1116
}
1217

18+
// triggers lint
19+
fn func_bad1(_: Rc<String>) {}
20+
fn func_bad2(_: Rc<PathBuf>) {}
21+
fn func_bad3(_: Rc<Vec<u8>>) {}
22+
fn func_bad4(_: Rc<OsString>) {}
23+
// does not trigger lint
24+
fn func_good1(_: Rc<RefCell<String>>) {}
25+
1326
fn main() {}

tests/ui/rc_buffer.stderr

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,52 @@
11
error: usage of `Rc<T>` when T is a buffer type
2-
--> $DIR/rc_buffer.rs:7:8
2+
--> $DIR/rc_buffer.rs:10:11
33
|
4-
LL | a: Rc<String>,
5-
| ^^^^^^^^^^ help: try: `Rc<str>`
4+
LL | bad1: Rc<String>,
5+
| ^^^^^^^^^^ help: try: `Rc<str>`
66
|
77
= note: `-D clippy::rc-buffer` implied by `-D warnings`
88

99
error: usage of `Rc<T>` when T is a buffer type
10-
--> $DIR/rc_buffer.rs:8:8
10+
--> $DIR/rc_buffer.rs:11:11
1111
|
12-
LL | b: Rc<PathBuf>,
13-
| ^^^^^^^^^^^ help: try: `Rc<std::path::Path>`
12+
LL | bad2: Rc<PathBuf>,
13+
| ^^^^^^^^^^^ help: try: `Rc<std::path::Path>`
1414

1515
error: usage of `Rc<T>` when T is a buffer type
16-
--> $DIR/rc_buffer.rs:9:8
16+
--> $DIR/rc_buffer.rs:12:11
1717
|
18-
LL | c: Rc<Vec<u8>>,
19-
| ^^^^^^^^^^^ help: try: `Rc<[u8]>`
18+
LL | bad3: Rc<Vec<u8>>,
19+
| ^^^^^^^^^^^ help: try: `Rc<[u8]>`
2020

2121
error: usage of `Rc<T>` when T is a buffer type
22-
--> $DIR/rc_buffer.rs:10:8
22+
--> $DIR/rc_buffer.rs:13:11
2323
|
24-
LL | d: Rc<OsString>,
25-
| ^^^^^^^^^^^^ help: try: `Rc<std::ffi::OsStr>`
24+
LL | bad4: Rc<OsString>,
25+
| ^^^^^^^^^^^^ help: try: `Rc<std::ffi::OsStr>`
2626

27-
error: aborting due to 4 previous errors
27+
error: usage of `Rc<T>` when T is a buffer type
28+
--> $DIR/rc_buffer.rs:19:17
29+
|
30+
LL | fn func_bad1(_: Rc<String>) {}
31+
| ^^^^^^^^^^ help: try: `Rc<str>`
32+
33+
error: usage of `Rc<T>` when T is a buffer type
34+
--> $DIR/rc_buffer.rs:20:17
35+
|
36+
LL | fn func_bad2(_: Rc<PathBuf>) {}
37+
| ^^^^^^^^^^^ help: try: `Rc<std::path::Path>`
38+
39+
error: usage of `Rc<T>` when T is a buffer type
40+
--> $DIR/rc_buffer.rs:21:17
41+
|
42+
LL | fn func_bad3(_: Rc<Vec<u8>>) {}
43+
| ^^^^^^^^^^^ help: try: `Rc<[u8]>`
44+
45+
error: usage of `Rc<T>` when T is a buffer type
46+
--> $DIR/rc_buffer.rs:22:17
47+
|
48+
LL | fn func_bad4(_: Rc<OsString>) {}
49+
| ^^^^^^^^^^^^ help: try: `Rc<std::ffi::OsStr>`
50+
51+
error: aborting due to 8 previous errors
2852

tests/ui/rc_buffer_arc.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
1+
#![warn(clippy::rc_buffer)]
2+
13
use std::ffi::OsString;
24
use std::path::PathBuf;
3-
use std::sync::Arc;
5+
use std::sync::{Arc, Mutex};
46

5-
#[warn(clippy::rc_buffer)]
67
struct S {
7-
a: Arc<String>,
8-
b: Arc<PathBuf>,
9-
c: Arc<Vec<u8>>,
10-
d: Arc<OsString>,
8+
// triggers lint
9+
bad1: Arc<String>,
10+
bad2: Arc<PathBuf>,
11+
bad3: Arc<Vec<u8>>,
12+
bad4: Arc<OsString>,
13+
// does not trigger lint
14+
good1: Arc<Mutex<String>>,
1115
}
1216

17+
// triggers lint
18+
fn func_bad1(_: Arc<String>) {}
19+
fn func_bad2(_: Arc<PathBuf>) {}
20+
fn func_bad3(_: Arc<Vec<u8>>) {}
21+
fn func_bad4(_: Arc<OsString>) {}
22+
// does not trigger lint
23+
fn func_good1(_: Arc<Mutex<String>>) {}
24+
1325
fn main() {}

tests/ui/rc_buffer_arc.stderr

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,52 @@
11
error: usage of `Arc<T>` when T is a buffer type
2-
--> $DIR/rc_buffer_arc.rs:7:8
2+
--> $DIR/rc_buffer_arc.rs:9:11
33
|
4-
LL | a: Arc<String>,
5-
| ^^^^^^^^^^^ help: try: `Arc<str>`
4+
LL | bad1: Arc<String>,
5+
| ^^^^^^^^^^^ help: try: `Arc<str>`
66
|
77
= note: `-D clippy::rc-buffer` implied by `-D warnings`
88

99
error: usage of `Arc<T>` when T is a buffer type
10-
--> $DIR/rc_buffer_arc.rs:8:8
10+
--> $DIR/rc_buffer_arc.rs:10:11
1111
|
12-
LL | b: Arc<PathBuf>,
13-
| ^^^^^^^^^^^^ help: try: `Arc<std::path::Path>`
12+
LL | bad2: Arc<PathBuf>,
13+
| ^^^^^^^^^^^^ help: try: `Arc<std::path::Path>`
1414

1515
error: usage of `Arc<T>` when T is a buffer type
16-
--> $DIR/rc_buffer_arc.rs:9:8
16+
--> $DIR/rc_buffer_arc.rs:11:11
1717
|
18-
LL | c: Arc<Vec<u8>>,
19-
| ^^^^^^^^^^^^ help: try: `Arc<[u8]>`
18+
LL | bad3: Arc<Vec<u8>>,
19+
| ^^^^^^^^^^^^ help: try: `Arc<[u8]>`
2020

2121
error: usage of `Arc<T>` when T is a buffer type
22-
--> $DIR/rc_buffer_arc.rs:10:8
22+
--> $DIR/rc_buffer_arc.rs:12:11
2323
|
24-
LL | d: Arc<OsString>,
25-
| ^^^^^^^^^^^^^ help: try: `Arc<std::ffi::OsStr>`
24+
LL | bad4: Arc<OsString>,
25+
| ^^^^^^^^^^^^^ help: try: `Arc<std::ffi::OsStr>`
2626

27-
error: aborting due to 4 previous errors
27+
error: usage of `Arc<T>` when T is a buffer type
28+
--> $DIR/rc_buffer_arc.rs:18:17
29+
|
30+
LL | fn func_bad1(_: Arc<String>) {}
31+
| ^^^^^^^^^^^ help: try: `Arc<str>`
32+
33+
error: usage of `Arc<T>` when T is a buffer type
34+
--> $DIR/rc_buffer_arc.rs:19:17
35+
|
36+
LL | fn func_bad2(_: Arc<PathBuf>) {}
37+
| ^^^^^^^^^^^^ help: try: `Arc<std::path::Path>`
38+
39+
error: usage of `Arc<T>` when T is a buffer type
40+
--> $DIR/rc_buffer_arc.rs:20:17
41+
|
42+
LL | fn func_bad3(_: Arc<Vec<u8>>) {}
43+
| ^^^^^^^^^^^^ help: try: `Arc<[u8]>`
44+
45+
error: usage of `Arc<T>` when T is a buffer type
46+
--> $DIR/rc_buffer_arc.rs:21:17
47+
|
48+
LL | fn func_bad4(_: Arc<OsString>) {}
49+
| ^^^^^^^^^^^^^ help: try: `Arc<std::ffi::OsStr>`
50+
51+
error: aborting due to 8 previous errors
2852

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#![warn(clippy::rc_buffer)]
2+
3+
use std::rc::Rc;
4+
5+
struct String;
6+
7+
struct S {
8+
// does not trigger lint
9+
good1: Rc<String>,
10+
}
11+
12+
fn main() {}

tests/ui/rc_buffer_redefined_string.stderr

Whitespace-only changes.

0 commit comments

Comments
 (0)