rustc_pass_by_value: handle inferred generic types (with _)
This commit is contained in:
parent
959bf2bc2e
commit
2728af7bc0
3 changed files with 25 additions and 15 deletions
|
@ -73,19 +73,15 @@ fn gen_args(cx: &LateContext<'_>, segment: &PathSegment<'_>) -> String {
|
||||||
let params = args
|
let params = args
|
||||||
.args
|
.args
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|arg| match arg {
|
.map(|arg| match arg {
|
||||||
GenericArg::Lifetime(lt) => Some(lt.name.ident().to_string()),
|
GenericArg::Lifetime(lt) => lt.name.ident().to_string(),
|
||||||
GenericArg::Type(ty) => {
|
GenericArg::Type(ty) => {
|
||||||
let snippet =
|
cx.tcx.sess.source_map().span_to_snippet(ty.span).unwrap_or_default()
|
||||||
cx.tcx.sess.source_map().span_to_snippet(ty.span).unwrap_or_default();
|
|
||||||
Some(snippet)
|
|
||||||
}
|
}
|
||||||
GenericArg::Const(c) => {
|
GenericArg::Const(c) => {
|
||||||
let snippet =
|
cx.tcx.sess.source_map().span_to_snippet(c.span).unwrap_or_default()
|
||||||
cx.tcx.sess.source_map().span_to_snippet(c.span).unwrap_or_default();
|
|
||||||
Some(snippet)
|
|
||||||
}
|
}
|
||||||
_ => None,
|
GenericArg::Infer(_) => String::from("_"),
|
||||||
})
|
})
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
|
|
@ -105,11 +105,13 @@ struct WithParameters<T, const N: usize, M = u32> {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T> WithParameters<T, 1> {
|
impl<T> WithParameters<T, 1> {
|
||||||
fn test(
|
fn test<'a>(
|
||||||
value: WithParameters<T, 1>,
|
value: WithParameters<T, 1>,
|
||||||
reference: &WithParameters<T, 1>, //~ ERROR passing `WithParameters<T, 1>` by reference
|
reference: &'a WithParameters<T, 1>, //~ ERROR passing `WithParameters<T, 1>` by reference
|
||||||
reference_with_m: &WithParameters<T, 1, u32>, //~ ERROR passing `WithParameters<T, 1, u32>` by reference
|
reference_with_m: &WithParameters<T, 1, u32>, //~ ERROR passing `WithParameters<T, 1, u32>` by reference
|
||||||
) {
|
) -> &'a WithParameters<T, 1> {
|
||||||
|
//~^ ERROR passing `WithParameters<T, 1>` by reference
|
||||||
|
reference as &WithParameters<_, 1> //~ ERROR passing `WithParameters<_, 1>` by reference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -103,8 +103,8 @@ LL | reference: &CustomAlias,
|
||||||
error: passing `WithParameters<T, 1>` by reference
|
error: passing `WithParameters<T, 1>` by reference
|
||||||
--> $DIR/rustc_pass_by_value.rs:110:20
|
--> $DIR/rustc_pass_by_value.rs:110:20
|
||||||
|
|
|
|
||||||
LL | reference: &WithParameters<T, 1>,
|
LL | reference: &'a WithParameters<T, 1>,
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1>`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1>`
|
||||||
|
|
||||||
error: passing `WithParameters<T, 1, u32>` by reference
|
error: passing `WithParameters<T, 1, u32>` by reference
|
||||||
--> $DIR/rustc_pass_by_value.rs:111:27
|
--> $DIR/rustc_pass_by_value.rs:111:27
|
||||||
|
@ -112,5 +112,17 @@ error: passing `WithParameters<T, 1, u32>` by reference
|
||||||
LL | reference_with_m: &WithParameters<T, 1, u32>,
|
LL | reference_with_m: &WithParameters<T, 1, u32>,
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1, u32>`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1, u32>`
|
||||||
|
|
||||||
error: aborting due to 18 previous errors
|
error: passing `WithParameters<T, 1>` by reference
|
||||||
|
--> $DIR/rustc_pass_by_value.rs:112:10
|
||||||
|
|
|
||||||
|
LL | ) -> &'a WithParameters<T, 1> {
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<T, 1>`
|
||||||
|
|
||||||
|
error: passing `WithParameters<_, 1>` by reference
|
||||||
|
--> $DIR/rustc_pass_by_value.rs:114:22
|
||||||
|
|
|
||||||
|
LL | reference as &WithParameters<_, 1>
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^ help: try passing by value: `WithParameters<_, 1>`
|
||||||
|
|
||||||
|
error: aborting due to 20 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue