Rollup merge of #72668 - awoimbee:give-fn-parenthetical-notation-parentheses, r=estebank
Fix missing parentheses Fn notation error Fixes #72611 Well, fixes the error output, I think E0658 is the right error to throw in this case so I didn't change that
This commit is contained in:
commit
65a02f1841
4 changed files with 77 additions and 2 deletions
|
|
@ -1151,9 +1151,16 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||
.as_ref()
|
||||
.and_then(|args| args.args.get(0))
|
||||
.and_then(|arg| match arg {
|
||||
hir::GenericArg::Type(ty) => {
|
||||
sess.source_map().span_to_snippet(ty.span).ok()
|
||||
hir::GenericArg::Type(ty) => match ty.kind {
|
||||
hir::TyKind::Tup(t) => t
|
||||
.iter()
|
||||
.map(|e| sess.source_map().span_to_snippet(e.span))
|
||||
.collect::<Result<Vec<_>, _>>()
|
||||
.map(|a| a.join(", ")),
|
||||
_ => sess.source_map().span_to_snippet(ty.span),
|
||||
}
|
||||
.map(|s| format!("({})", s))
|
||||
.ok(),
|
||||
_ => None,
|
||||
})
|
||||
.unwrap_or_else(|| "()".to_string()),
|
||||
|
|
|
|||
19
src/test/ui/suggestions/fn-trait-notation.fixed
Normal file
19
src/test/ui/suggestions/fn-trait-notation.fixed
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// run-rustfix
|
||||
fn e0658<F, G, H>(f: F, g: G, h: H) -> i32
|
||||
where
|
||||
F: Fn(i32) -> i32, //~ ERROR E0658
|
||||
G: Fn(i32, i32) -> (i32, i32), //~ ERROR E0658
|
||||
H: Fn(i32) -> i32, //~ ERROR E0658
|
||||
{
|
||||
f(3);
|
||||
g(3, 4);
|
||||
h(3)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
e0658(
|
||||
|a| a,
|
||||
|a, b| (b, a),
|
||||
|a| a,
|
||||
);
|
||||
}
|
||||
19
src/test/ui/suggestions/fn-trait-notation.rs
Normal file
19
src/test/ui/suggestions/fn-trait-notation.rs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
// run-rustfix
|
||||
fn e0658<F, G, H>(f: F, g: G, h: H) -> i32
|
||||
where
|
||||
F: Fn<i32, Output = i32>, //~ ERROR E0658
|
||||
G: Fn<(i32, i32, ), Output = (i32, i32)>, //~ ERROR E0658
|
||||
H: Fn<(i32,), Output = i32>, //~ ERROR E0658
|
||||
{
|
||||
f(3);
|
||||
g(3, 4);
|
||||
h(3)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
e0658(
|
||||
|a| a,
|
||||
|a, b| (b, a),
|
||||
|a| a,
|
||||
);
|
||||
}
|
||||
30
src/test/ui/suggestions/fn-trait-notation.stderr
Normal file
30
src/test/ui/suggestions/fn-trait-notation.stderr
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
error[E0658]: the precise format of `Fn`-family traits' type parameters is subject to change
|
||||
--> $DIR/fn-trait-notation.rs:4:8
|
||||
|
|
||||
LL | F: Fn<i32, Output = i32>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ help: use parenthetical notation instead: `Fn(i32) -> i32`
|
||||
|
|
||||
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
|
||||
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: the precise format of `Fn`-family traits' type parameters is subject to change
|
||||
--> $DIR/fn-trait-notation.rs:5:8
|
||||
|
|
||||
LL | G: Fn<(i32, i32, ), Output = (i32, i32)>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use parenthetical notation instead: `Fn(i32, i32) -> (i32, i32)`
|
||||
|
|
||||
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
|
||||
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: the precise format of `Fn`-family traits' type parameters is subject to change
|
||||
--> $DIR/fn-trait-notation.rs:6:8
|
||||
|
|
||||
LL | H: Fn<(i32,), Output = i32>,
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: use parenthetical notation instead: `Fn(i32) -> i32`
|
||||
|
|
||||
= note: see issue #29625 <https://github.com/rust-lang/rust/issues/29625> for more information
|
||||
= help: add `#![feature(unboxed_closures)]` to the crate attributes to enable
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue