Skip to content

Commit 5cbe6aa

Browse files
committed
Reword E0392 slightly
Make it clearer that a type or lifetime argument not being used can be fixed by referencing it in a struct's fields, not just using `PhathomData`.
1 parent 18f00b9 commit 5cbe6aa

15 files changed

+30
-25
lines changed

src/librustc_typeck/check/wfcheck.rs

+10-5
Original file line numberDiff line numberDiff line change
@@ -999,11 +999,16 @@ fn report_bivariance(tcx: TyCtxt<'_>, span: Span, param_name: ast::Name) {
999999

10001000
let suggested_marker_id = tcx.lang_items().phantom_data();
10011001
// Help is available only in presence of lang items.
1002-
if let Some(def_id) = suggested_marker_id {
1003-
err.help(&format!("consider removing `{}` or using a marker such as `{}`",
1004-
param_name,
1005-
tcx.def_path_str(def_id)));
1006-
}
1002+
let msg = if let Some(def_id) = suggested_marker_id {
1003+
format!(
1004+
"consider removing `{}`, refering to it in a field or using a marker such as `{}`",
1005+
param_name,
1006+
tcx.def_path_str(def_id),
1007+
)
1008+
} else {
1009+
format!( "consider removing `{}` or refering to it in a field", param_name)
1010+
};
1011+
err.help(&msg);
10071012
err.emit();
10081013
}
10091014

src/test/ui/const-generics/const-param-type-depends-on-type-param.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ error[E0392]: parameter `T` is never used
1818
LL | pub struct Dependent<T, const X: T>([(); X]);
1919
| ^ unused parameter
2020
|
21-
= help: consider removing `T` or using a marker such as `std::marker::PhantomData`
21+
= help: consider removing `T`, refering to it in a field or using a marker such as `std::marker::PhantomData`
2222

2323
error: aborting due to 2 previous errors
2424

src/test/ui/error-codes/E0392.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ error[E0392]: parameter `T` is never used
44
LL | enum Foo<T> { Bar }
55
| ^ unused parameter
66
|
7-
= help: consider removing `T` or using a marker such as `std::marker::PhantomData`
7+
= help: consider removing `T`, refering to it in a field or using a marker such as `std::marker::PhantomData`
88

99
error: aborting due to previous error
1010

src/test/ui/inner-static-type-parameter.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ error[E0392]: parameter `T` is never used
1414
LL | enum Bar<T> { What }
1515
| ^ unused parameter
1616
|
17-
= help: consider removing `T` or using a marker such as `std::marker::PhantomData`
17+
= help: consider removing `T`, refering to it in a field or using a marker such as `std::marker::PhantomData`
1818

1919
error: aborting due to 2 previous errors
2020

src/test/ui/issues/issue-17904-2.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ error[E0392]: parameter `T` is never used
44
LL | struct Foo<T> where T: Copy;
55
| ^ unused parameter
66
|
7-
= help: consider removing `T` or using a marker such as `std::marker::PhantomData`
7+
= help: consider removing `T`, refering to it in a field or using a marker such as `std::marker::PhantomData`
88

99
error: aborting due to previous error
1010

src/test/ui/issues/issue-20413.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ error[E0392]: parameter `T` is never used
44
LL | struct NoData<T>;
55
| ^ unused parameter
66
|
7-
= help: consider removing `T` or using a marker such as `std::marker::PhantomData`
7+
= help: consider removing `T`, refering to it in a field or using a marker such as `std::marker::PhantomData`
88

99
error[E0275]: overflow evaluating the requirement `NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<NoData<T>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>: Foo`
1010
--> $DIR/issue-20413.rs:8:1

src/test/ui/issues/issue-36299.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ error[E0392]: parameter `'a` is never used
44
LL | struct Foo<'a, A> {}
55
| ^^ unused parameter
66
|
7-
= help: consider removing `'a` or using a marker such as `std::marker::PhantomData`
7+
= help: consider removing `'a`, refering to it in a field or using a marker such as `std::marker::PhantomData`
88

99
error[E0392]: parameter `A` is never used
1010
--> $DIR/issue-36299.rs:1:16
1111
|
1212
LL | struct Foo<'a, A> {}
1313
| ^ unused parameter
1414
|
15-
= help: consider removing `A` or using a marker such as `std::marker::PhantomData`
15+
= help: consider removing `A`, refering to it in a field or using a marker such as `std::marker::PhantomData`
1616

1717
error: aborting due to 2 previous errors
1818

src/test/ui/issues/issue-36638.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ error[E0392]: parameter `Self` is never used
1616
LL | struct Foo<Self>(Self);
1717
| ^^^^ unused parameter
1818
|
19-
= help: consider removing `Self` or using a marker such as `std::marker::PhantomData`
19+
= help: consider removing `Self`, refering to it in a field or using a marker such as `std::marker::PhantomData`
2020

2121
error: aborting due to 3 previous errors
2222

src/test/ui/issues/issue-37534.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ error[E0392]: parameter `T` is never used
2020
LL | struct Foo<T: ?Hash> { }
2121
| ^ unused parameter
2222
|
23-
= help: consider removing `T` or using a marker such as `std::marker::PhantomData`
23+
= help: consider removing `T`, refering to it in a field or using a marker such as `std::marker::PhantomData`
2424

2525
error: aborting due to 2 previous errors
2626

src/test/ui/regions/region-bounds-on-objects-and-type-parameters.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ error[E0392]: parameter `'c` is never used
2727
LL | struct Foo<'a,'b,'c> {
2828
| ^^ unused parameter
2929
|
30-
= help: consider removing `'c` or using a marker such as `std::marker::PhantomData`
30+
= help: consider removing `'c`, refering to it in a field or using a marker such as `std::marker::PhantomData`
3131

3232
error: aborting due to 3 previous errors
3333

src/test/ui/self/self_type_keyword.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ error[E0392]: parameter `'Self` is never used
7676
LL | struct Bar<'Self>;
7777
| ^^^^^ unused parameter
7878
|
79-
= help: consider removing `'Self` or using a marker such as `std::marker::PhantomData`
79+
= help: consider removing `'Self`, refering to it in a field or using a marker such as `std::marker::PhantomData`
8080

8181
error: aborting due to 12 previous errors
8282

src/test/ui/variance/variance-regions-unused-direct.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ error[E0392]: parameter `'a` is never used
44
LL | struct Bivariant<'a>;
55
| ^^ unused parameter
66
|
7-
= help: consider removing `'a` or using a marker such as `std::marker::PhantomData`
7+
= help: consider removing `'a`, refering to it in a field or using a marker such as `std::marker::PhantomData`
88

99
error[E0392]: parameter `'d` is never used
1010
--> $DIR/variance-regions-unused-direct.rs:7:19
1111
|
1212
LL | struct Struct<'a, 'd> {
1313
| ^^ unused parameter
1414
|
15-
= help: consider removing `'d` or using a marker such as `std::marker::PhantomData`
15+
= help: consider removing `'d`, refering to it in a field or using a marker such as `std::marker::PhantomData`
1616

1717
error: aborting due to 2 previous errors
1818

src/test/ui/variance/variance-regions-unused-indirect.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ error[E0392]: parameter `'a` is never used
44
LL | enum Foo<'a> {
55
| ^^ unused parameter
66
|
7-
= help: consider removing `'a` or using a marker such as `std::marker::PhantomData`
7+
= help: consider removing `'a`, refering to it in a field or using a marker such as `std::marker::PhantomData`
88

99
error[E0392]: parameter `'a` is never used
1010
--> $DIR/variance-regions-unused-indirect.rs:7:10
1111
|
1212
LL | enum Bar<'a> {
1313
| ^^ unused parameter
1414
|
15-
= help: consider removing `'a` or using a marker such as `std::marker::PhantomData`
15+
= help: consider removing `'a`, refering to it in a field or using a marker such as `std::marker::PhantomData`
1616

1717
error: aborting due to 2 previous errors
1818

src/test/ui/variance/variance-unused-region-param.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ error[E0392]: parameter `'a` is never used
44
LL | struct SomeStruct<'a> { x: u32 }
55
| ^^ unused parameter
66
|
7-
= help: consider removing `'a` or using a marker such as `std::marker::PhantomData`
7+
= help: consider removing `'a`, refering to it in a field or using a marker such as `std::marker::PhantomData`
88

99
error[E0392]: parameter `'a` is never used
1010
--> $DIR/variance-unused-region-param.rs:4:15
1111
|
1212
LL | enum SomeEnum<'a> { Nothing }
1313
| ^^ unused parameter
1414
|
15-
= help: consider removing `'a` or using a marker such as `std::marker::PhantomData`
15+
= help: consider removing `'a`, refering to it in a field or using a marker such as `std::marker::PhantomData`
1616

1717
error: aborting due to 2 previous errors
1818

src/test/ui/variance/variance-unused-type-param.stderr

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@ error[E0392]: parameter `A` is never used
44
LL | struct SomeStruct<A> { x: u32 }
55
| ^ unused parameter
66
|
7-
= help: consider removing `A` or using a marker such as `std::marker::PhantomData`
7+
= help: consider removing `A`, refering to it in a field or using a marker such as `std::marker::PhantomData`
88

99
error[E0392]: parameter `A` is never used
1010
--> $DIR/variance-unused-type-param.rs:9:15
1111
|
1212
LL | enum SomeEnum<A> { Nothing }
1313
| ^ unused parameter
1414
|
15-
= help: consider removing `A` or using a marker such as `std::marker::PhantomData`
15+
= help: consider removing `A`, refering to it in a field or using a marker such as `std::marker::PhantomData`
1616

1717
error[E0392]: parameter `T` is never used
1818
--> $DIR/variance-unused-type-param.rs:13:15
1919
|
2020
LL | enum ListCell<T> {
2121
| ^ unused parameter
2222
|
23-
= help: consider removing `T` or using a marker such as `std::marker::PhantomData`
23+
= help: consider removing `T`, refering to it in a field or using a marker such as `std::marker::PhantomData`
2424

2525
error: aborting due to 3 previous errors
2626

0 commit comments

Comments
 (0)