Make ImplTraitPosition display more descriptive
This commit is contained in:
parent
fde0e98247
commit
8af1a6a1e5
@ -329,24 +329,24 @@ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|||||||
ImplTraitPosition::AsyncBlock => "async blocks",
|
ImplTraitPosition::AsyncBlock => "async blocks",
|
||||||
ImplTraitPosition::Bound => "bounds",
|
ImplTraitPosition::Bound => "bounds",
|
||||||
ImplTraitPosition::Generic => "generics",
|
ImplTraitPosition::Generic => "generics",
|
||||||
ImplTraitPosition::ExternFnParam => "`extern fn` params",
|
ImplTraitPosition::ExternFnParam => "`extern fn` parameters",
|
||||||
ImplTraitPosition::ClosureParam => "closure params",
|
ImplTraitPosition::ClosureParam => "closure parameters",
|
||||||
ImplTraitPosition::PointerParam => "`fn` pointer params",
|
ImplTraitPosition::PointerParam => "`fn` pointer parameters",
|
||||||
ImplTraitPosition::FnTraitParam => "`Fn` trait params",
|
ImplTraitPosition::FnTraitParam => "the parameters of `Fn` trait bounds",
|
||||||
ImplTraitPosition::TraitParam => "trait method params",
|
ImplTraitPosition::TraitParam => "trait method parameters",
|
||||||
ImplTraitPosition::ImplParam => "`impl` method params",
|
ImplTraitPosition::ImplParam => "`impl` method parameters",
|
||||||
ImplTraitPosition::ExternFnReturn => "`extern fn` return types",
|
ImplTraitPosition::ExternFnReturn => "`extern fn` return types",
|
||||||
ImplTraitPosition::ClosureReturn => "closure return types",
|
ImplTraitPosition::ClosureReturn => "closure return types",
|
||||||
ImplTraitPosition::PointerReturn => "`fn` pointer return types",
|
ImplTraitPosition::PointerReturn => "`fn` pointer return types",
|
||||||
ImplTraitPosition::FnTraitReturn => "`Fn` trait return types",
|
ImplTraitPosition::FnTraitReturn => "the return types of `Fn` trait bounds",
|
||||||
ImplTraitPosition::GenericDefault => "generic parameter defaults",
|
ImplTraitPosition::GenericDefault => "generic parameter defaults",
|
||||||
ImplTraitPosition::ConstTy => "const types",
|
ImplTraitPosition::ConstTy => "const types",
|
||||||
ImplTraitPosition::StaticTy => "static types",
|
ImplTraitPosition::StaticTy => "static types",
|
||||||
ImplTraitPosition::AssocTy => "associated types",
|
ImplTraitPosition::AssocTy => "associated types",
|
||||||
ImplTraitPosition::FieldTy => "field types",
|
ImplTraitPosition::FieldTy => "field types",
|
||||||
ImplTraitPosition::Cast => "cast types",
|
ImplTraitPosition::Cast => "cast expression types",
|
||||||
ImplTraitPosition::ImplSelf => "impl headers",
|
ImplTraitPosition::ImplSelf => "impl headers",
|
||||||
ImplTraitPosition::OffsetOf => "`offset_of!` params",
|
ImplTraitPosition::OffsetOf => "`offset_of!` parameters",
|
||||||
};
|
};
|
||||||
|
|
||||||
write!(f, "{name}")
|
write!(f, "{name}")
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
fn f() -> impl Fn() -> impl Sized { || () }
|
fn f() -> impl Fn() -> impl Sized { || () }
|
||||||
//~^ ERROR `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait return
|
//~^ ERROR `impl Trait` only allowed in function and inherent method argument and return types, not in the return types of `Fn` trait bounds
|
||||||
fn g() -> &'static dyn Fn() -> impl Sized { &|| () }
|
fn g() -> &'static dyn Fn() -> impl Sized { &|| () }
|
||||||
//~^ ERROR `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait return
|
//~^ ERROR `impl Trait` only allowed in function and inherent method argument and return types, not in the return types of `Fn` trait bounds
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait return types
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the return types of `Fn` trait bounds
|
||||||
--> $DIR/feature-gate-impl_trait_in_fn_trait_return.rs:1:24
|
--> $DIR/feature-gate-impl_trait_in_fn_trait_return.rs:1:24
|
||||||
|
|
|
|
||||||
LL | fn f() -> impl Fn() -> impl Sized { || () }
|
LL | fn f() -> impl Fn() -> impl Sized { || () }
|
||||||
@ -7,7 +7,7 @@ LL | fn f() -> impl Fn() -> impl Sized { || () }
|
|||||||
= note: see issue #99697 <https://github.com/rust-lang/rust/issues/99697> for more information
|
= note: see issue #99697 <https://github.com/rust-lang/rust/issues/99697> for more information
|
||||||
= help: add `#![feature(impl_trait_in_fn_trait_return)]` to the crate attributes to enable
|
= help: add `#![feature(impl_trait_in_fn_trait_return)]` to the crate attributes to enable
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait return types
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the return types of `Fn` trait bounds
|
||||||
--> $DIR/feature-gate-impl_trait_in_fn_trait_return.rs:3:32
|
--> $DIR/feature-gate-impl_trait_in_fn_trait_return.rs:3:32
|
||||||
|
|
|
|
||||||
LL | fn g() -> &'static dyn Fn() -> impl Sized { &|| () }
|
LL | fn g() -> &'static dyn Fn() -> impl Sized { &|| () }
|
||||||
|
@ -43,7 +43,7 @@ LL | type InReturnInTypeAlias<R> = fn() -> impl Debug;
|
|||||||
= note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
|
= note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
|
||||||
= help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
|
= help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `fn` pointer params
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `fn` pointer parameters
|
||||||
--> $DIR/where-allowed.rs:18:40
|
--> $DIR/where-allowed.rs:18:40
|
||||||
|
|
|
|
||||||
LL | fn in_fn_parameter_in_parameters(_: fn(impl Debug)) { panic!() }
|
LL | fn in_fn_parameter_in_parameters(_: fn(impl Debug)) { panic!() }
|
||||||
@ -55,7 +55,7 @@ error[E0562]: `impl Trait` only allowed in function and inherent method argument
|
|||||||
LL | fn in_fn_return_in_parameters(_: fn() -> impl Debug) { panic!() }
|
LL | fn in_fn_return_in_parameters(_: fn() -> impl Debug) { panic!() }
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `fn` pointer params
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `fn` pointer parameters
|
||||||
--> $DIR/where-allowed.rs:26:38
|
--> $DIR/where-allowed.rs:26:38
|
||||||
|
|
|
|
||||||
LL | fn in_fn_parameter_in_return() -> fn(impl Debug) { panic!() }
|
LL | fn in_fn_parameter_in_return() -> fn(impl Debug) { panic!() }
|
||||||
@ -67,49 +67,49 @@ error[E0562]: `impl Trait` only allowed in function and inherent method argument
|
|||||||
LL | fn in_fn_return_in_return() -> fn() -> impl Debug { panic!() }
|
LL | fn in_fn_return_in_return() -> fn() -> impl Debug { panic!() }
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait params
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the parameters of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:34:49
|
--> $DIR/where-allowed.rs:34:49
|
||||||
|
|
|
|
||||||
LL | fn in_dyn_Fn_parameter_in_parameters(_: &dyn Fn(impl Debug)) { panic!() }
|
LL | fn in_dyn_Fn_parameter_in_parameters(_: &dyn Fn(impl Debug)) { panic!() }
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait return types
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the return types of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:38:51
|
--> $DIR/where-allowed.rs:38:51
|
||||||
|
|
|
|
||||||
LL | fn in_dyn_Fn_return_in_parameters(_: &dyn Fn() -> impl Debug) { panic!() }
|
LL | fn in_dyn_Fn_return_in_parameters(_: &dyn Fn() -> impl Debug) { panic!() }
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait params
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the parameters of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:42:55
|
--> $DIR/where-allowed.rs:42:55
|
||||||
|
|
|
|
||||||
LL | fn in_dyn_Fn_parameter_in_return() -> &'static dyn Fn(impl Debug) { panic!() }
|
LL | fn in_dyn_Fn_parameter_in_return() -> &'static dyn Fn(impl Debug) { panic!() }
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait params
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the parameters of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:49:51
|
--> $DIR/where-allowed.rs:49:51
|
||||||
|
|
|
|
||||||
LL | fn in_impl_Fn_parameter_in_parameters(_: &impl Fn(impl Debug)) { panic!() }
|
LL | fn in_impl_Fn_parameter_in_parameters(_: &impl Fn(impl Debug)) { panic!() }
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait return types
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the return types of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:54:53
|
--> $DIR/where-allowed.rs:54:53
|
||||||
|
|
|
|
||||||
LL | fn in_impl_Fn_return_in_parameters(_: &impl Fn() -> impl Debug) { panic!() }
|
LL | fn in_impl_Fn_return_in_parameters(_: &impl Fn() -> impl Debug) { panic!() }
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait params
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the parameters of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:58:57
|
--> $DIR/where-allowed.rs:58:57
|
||||||
|
|
|
|
||||||
LL | fn in_impl_Fn_parameter_in_return() -> &'static impl Fn(impl Debug) { panic!() }
|
LL | fn in_impl_Fn_parameter_in_return() -> &'static impl Fn(impl Debug) { panic!() }
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait params
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the parameters of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:66:38
|
--> $DIR/where-allowed.rs:66:38
|
||||||
|
|
|
|
||||||
LL | fn in_Fn_parameter_in_generics<F: Fn(impl Debug)> (_: F) { panic!() }
|
LL | fn in_Fn_parameter_in_generics<F: Fn(impl Debug)> (_: F) { panic!() }
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait return types
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the return types of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:70:40
|
--> $DIR/where-allowed.rs:70:40
|
||||||
|
|
|
|
||||||
LL | fn in_Fn_return_in_generics<F: Fn() -> impl Debug> (_: F) { panic!() }
|
LL | fn in_Fn_return_in_generics<F: Fn() -> impl Debug> (_: F) { panic!() }
|
||||||
@ -145,7 +145,7 @@ error[E0562]: `impl Trait` only allowed in function and inherent method argument
|
|||||||
LL | InTupleVariant(impl Debug),
|
LL | InTupleVariant(impl Debug),
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `extern fn` params
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `extern fn` parameters
|
||||||
--> $DIR/where-allowed.rs:138:33
|
--> $DIR/where-allowed.rs:138:33
|
||||||
|
|
|
|
||||||
LL | fn in_foreign_parameters(_: impl Debug);
|
LL | fn in_foreign_parameters(_: impl Debug);
|
||||||
@ -205,13 +205,13 @@ error[E0562]: `impl Trait` only allowed in function and inherent method argument
|
|||||||
LL | where T: PartialEq<impl Debug>
|
LL | where T: PartialEq<impl Debug>
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait params
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the parameters of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:205:17
|
--> $DIR/where-allowed.rs:205:17
|
||||||
|
|
|
|
||||||
LL | where T: Fn(impl Debug)
|
LL | where T: Fn(impl Debug)
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in `Fn` trait return types
|
error[E0562]: `impl Trait` only allowed in function and inherent method argument and return types, not in the return types of `Fn` trait bounds
|
||||||
--> $DIR/where-allowed.rs:212:22
|
--> $DIR/where-allowed.rs:212:22
|
||||||
|
|
|
|
||||||
LL | where T: Fn() -> impl Debug
|
LL | where T: Fn() -> impl Debug
|
||||||
|
Loading…
Reference in New Issue
Block a user