diff --git a/src/test/ui/mir/issue-106062.rs b/src/test/ui/mir/issue-106062.rs new file mode 100644 index 0000000000000..621ba566ee38a --- /dev/null +++ b/src/test/ui/mir/issue-106062.rs @@ -0,0 +1,26 @@ +// edition:2018 + +use std::{future::Future, marker::PhantomData}; + +fn spawn(future: T) -> PhantomData +where + T: Future, +{ + loop {} +} + +#[derive(Debug)] +struct IncomingServer {} +impl IncomingServer { + async fn connection_handler(handler: impl Sized) -> Result { + //~^ ERROR expected type, found variant `Ok` [E0573] + loop {} + } + async fn spawn(&self, request_handler: impl Sized) { + async move { + spawn(Self::connection_handler(&request_handler)); + }; + } +} + +fn main() {} diff --git a/src/test/ui/mir/issue-106062.stderr b/src/test/ui/mir/issue-106062.stderr new file mode 100644 index 0000000000000..2f6524d03e00d --- /dev/null +++ b/src/test/ui/mir/issue-106062.stderr @@ -0,0 +1,16 @@ +error[E0573]: expected type, found variant `Ok` + --> $DIR/issue-106062.rs:15:64 + | +LL | async fn connection_handler(handler: impl Sized) -> Result { + | ^^ not a type + | +help: try using the variant's enum + | +LL | async fn connection_handler(handler: impl Sized) -> Result { + | ~~~~~~~~~~~~~~~~~~~~ +LL | async fn connection_handler(handler: impl Sized) -> Result { + | ~~~~~~~~~~~~~~~~~~~ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0573`.