From 54d60fdee9a49e2081837cc6445c61dec0b303af Mon Sep 17 00:00:00 2001 From: cynecx Date: Sat, 29 May 2021 18:16:20 +0200 Subject: hir_ty: use async ret type for inference inside async bodies --- crates/hir_ty/src/infer.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'crates/hir_ty/src/infer.rs') diff --git a/crates/hir_ty/src/infer.rs b/crates/hir_ty/src/infer.rs index 8cefd80f3..7a4268819 100644 --- a/crates/hir_ty/src/infer.rs +++ b/crates/hir_ty/src/infer.rs @@ -558,7 +558,13 @@ impl<'a> InferenceContext<'a> { self.infer_pat(*pat, &ty, BindingMode::default()); } - let return_ty = self.make_ty_with_mode(&data.ret_type, ImplTraitLoweringMode::Disallowed); // FIXME implement RPIT + let error_ty = &TypeRef::Error; + let return_ty = if data.is_async() { + data.async_ret_type.as_deref().unwrap_or(error_ty) + } else { + &*data.ret_type + }; + let return_ty = self.make_ty_with_mode(return_ty, ImplTraitLoweringMode::Disallowed); // FIXME implement RPIT self.return_ty = return_ty; } -- cgit v1.2.3