Add test for async closure types.

(rebased onto 6dfd8ae)
This commit is contained in:
Zachary S 2022-08-07 00:02:25 -05:00 committed by Lukas Wirth
parent 6746a08b44
commit af175ddcdc
2 changed files with 41 additions and 1 deletions

View File

@ -386,7 +386,7 @@ impl<'a> Printer<'a> {
self.print_type_ref(ret_ty);
}
(None, ClosureKind::Async) => {
w!(self, " -> impl Future<Output = {{unknown}}>"); // FIXME(zachs18): {unknown} or ()?
w!(self, " -> impl Future<Output = {{unknown}}>");
}
(None, _) => {}
}

View File

@ -82,6 +82,46 @@ async fn test() {
);
}
#[test]
fn infer_async_closure() {
check_types(
r#"
//- minicore: future, option
async fn test() {
let f = async move |x: i32| x + 42;
f;
// ^ |i32| -> impl Future<Output = i32>
let a = f(4);
a;
// ^ impl Future<Output = i32>
let x = a.await;
x;
// ^ i32
let f = async move || 42;
f;
// ^ || -> impl Future<Output = i32>
let a = f();
a;
// ^ impl Future<Output = i32>
let x = a.await;
x;
// ^ i32
let b = ((async move || {})()).await;
b;
// ^ ()
let c = async move || {
let y = None;
y
// ^ Option<u64>
};
let _: Option<u64> = c().await;
c;
// ^ || -> impl Future<Output = Option<u64>>
}
"#,
);
}
#[test]
fn auto_sized_async_block() {
check_no_mismatches(