Skip to content

Commit

Permalink
Fix test case
Browse files Browse the repository at this point in the history
  • Loading branch information
long-long-float committed Apr 21, 2024
1 parent f0114a1 commit 40b99a9
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 27 deletions.
12 changes: 9 additions & 3 deletions tests/ui/suggestions/wrap-dyn-in-suggestion-issue-120223.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,15 @@ pub fn dyn_star_func<T>(
Box::new(executor) //~ ERROR may not live long enough
}

pub fn in_ty_param<F: FnOnce() -> &'static dyn std::fmt::Debug>(f: F) {
f();
f(); //~ ERROR use of moved value
trait Trait {
fn method(&self) {}
}

impl Trait for fn() {}

pub fn in_ty_param<T: Fn() -> dyn std::fmt::Debug> (t: T) {
t.method();
//~^ ERROR no method named `method` found for type parameter `T`
}

fn with_sized<T: Fn() -> &'static (dyn std::fmt::Debug) + ?Sized>() {
Expand Down
42 changes: 18 additions & 24 deletions tests/ui/suggestions/wrap-dyn-in-suggestion-issue-120223.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,30 @@ LL | #![feature(dyn_star)]
= note: see issue #102425 <https://github.com/rust-lang/rust/issues/102425> for more information
= note: `#[warn(incomplete_features)]` on by default

error[E0599]: no method named `method` found for type parameter `T` in the current scope
--> $DIR/wrap-dyn-in-suggestion-issue-120223.rs:24:7
|
LL | pub fn in_ty_param<T: Fn() -> dyn std::fmt::Debug> (t: T) {
| - method `method` not found for this type parameter
LL | t.method();
| ^^^^^^ method not found in `T`
|
= help: items from traits can only be used if the type parameter is bounded by the trait
help: the following trait defines an item `method`, perhaps you need to restrict type parameter `T` with it:
|
LL | pub fn in_ty_param<T: Fn() -> (dyn std::fmt::Debug) + Trait> (t: T) {
| + +++++++++

error[E0277]: the size for values of type `T` cannot be known at compilation time
--> $DIR/wrap-dyn-in-suggestion-issue-120223.rs:23:21
--> $DIR/wrap-dyn-in-suggestion-issue-120223.rs:29:21
|
LL | fn with_sized<T: Fn() -> &'static (dyn std::fmt::Debug) + ?Sized>() {
| - this type parameter needs to be `Sized`
LL | without_sized::<T>();
LL | without_sized::<T>();
| ^ doesn't have a size known at compile-time
|
note: required by an implicit `Sized` bound in `without_sized`
--> $DIR/wrap-dyn-in-suggestion-issue-120223.rs:27:18
--> $DIR/wrap-dyn-in-suggestion-issue-120223.rs:33:18
|
LL | fn without_sized<T: Fn() -> &'static dyn std::fmt::Debug>() {}
| ^ required by the implicit `Sized` requirement on this type parameter in `without_sized`
Expand Down Expand Up @@ -58,27 +72,7 @@ help: consider adding an explicit lifetime bound
LL | executor: impl FnOnce(T) -> (dyn* Future<Output = ()>) + 'static,
| + +++++++++++

error[E0382]: use of moved value: `f`
--> $DIR/wrap-dyn-in-suggestion-issue-120223.rs:19:5
|
LL | pub fn in_ty_param<F: FnOnce() -> &'static dyn std::fmt::Debug>(f: F) {
| - move occurs because `f` has type `F`, which does not implement the `Copy` trait
LL | f();
| --- `f` moved due to this call
LL | f();
| ^ value used here after move
|
note: this value implements `FnOnce`, which causes it to be moved when called
--> $DIR/wrap-dyn-in-suggestion-issue-120223.rs:18:5
|
LL | f();
| ^
help: consider restricting type parameters
|
LL | pub fn in_ty_param<F: FnOnce() -> &'static (dyn std::fmt::Debug) + Copy>(f: F) {
| + ++++++++

error: aborting due to 4 previous errors; 1 warning emitted

Some errors have detailed explanations: E0277, E0310, E0382.
Some errors have detailed explanations: E0277, E0310, E0599.
For more information about an error, try `rustc --explain E0277`.

0 comments on commit 40b99a9

Please sign in to comment.