| // Regression test for #135668 | |
| //@ edition: 2021 | |
| use std::future::Future; | |
| pub async fn foo() { | |
| let _ = create_task().await; | |
| } | |
| async fn create_task() -> impl Sized { | |
| bind(documentation) | |
| } | |
| async fn documentation() { | |
| compile_error!("bonjour"); | |
| //~^ ERROR bonjour | |
| } | |
| fn bind<F>(_filter: F) -> impl Sized | |
| where | |
| F: FilterBase, | |
| { | |
| || -> <F as FilterBase>::Assoc { panic!() } | |
| } | |
| trait FilterBase { | |
| type Assoc; | |
| } | |
| impl<F, R> FilterBase for F | |
| where | |
| F: Fn() -> R, | |
| // Removing the below line makes it correctly error on both stable and beta | |
| R: Future, | |
| // Removing the below line makes it ICE on both stable and beta | |
| R: Send, | |
| // Removing the above two bounds makes it ICE on stable but correctly error on beta | |
| { | |
| type Assoc = F; | |
| } | |
| fn main() {} |