From 5d64b3d329cdd0452dc2fde1435998bd3e036538 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Wed, 2 Oct 2019 14:32:19 -0400 Subject: [PATCH] document `ret_coercion` and `ret_coercion_span` --- src/librustc_typeck/check/mod.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index 3ccb5f2ee5b..b1de54c692d 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -562,7 +562,19 @@ pub struct FnCtxt<'a, 'tcx> { // if type checking is run in parallel. err_count_on_creation: usize, + /// If `Some`, this stores coercion information for returned + /// expressions. If `None`, this is in a context where return is + /// inappropriate, such as a const expression. + /// + /// This is a `RefCell`, which means that we + /// can track all the return expressions and then use them to + /// compute a useful coercion from the set, similar to a match + /// expression or other branching context. You can use methods + /// like `expected_ty` to access the declared return type (if + /// any). ret_coercion: Option>>, + + /// First span of a return site that we find. Used in error messages. ret_coercion_span: RefCell>, yield_ty: Option>,