From: Esteban Küber Date: Wed, 29 Jan 2020 22:16:31 +0000 (-0800) Subject: Point at return type obligations instead of at `fn` ident X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=8d48597b76ef656a1a1f600c96176d1aaeab32ff;p=rust.git Point at return type obligations instead of at `fn` ident --- diff --git a/src/librustc_typeck/check/wfcheck.rs b/src/librustc_typeck/check/wfcheck.rs index 214e7d066ea..3a4a015c14a 100644 --- a/src/librustc_typeck/check/wfcheck.rs +++ b/src/librustc_typeck/check/wfcheck.rs @@ -530,7 +530,7 @@ fn check_where_clauses<'tcx, 'fcx>( fcx: &FnCtxt<'fcx, 'tcx>, span: Span, def_id: DefId, - return_ty: Option>, + return_ty: Option<(Ty<'tcx>, Span)>, ) { debug!("check_where_clauses(def_id={:?}, return_ty={:?})", def_id, return_ty); @@ -664,7 +664,7 @@ fn visit_const(&mut self, c: &'tcx ty::Const<'tcx>) -> bool { let mut predicates = predicates.instantiate_identity(fcx.tcx); - if let Some(return_ty) = return_ty { + if let Some((return_ty, span)) = return_ty { predicates.predicates.extend(check_opaque_types(tcx, fcx, def_id, span, return_ty)); } @@ -708,7 +708,7 @@ fn check_fn_or_method<'fcx, 'tcx>( // FIXME(#25759) return types should not be implied bounds implied_bounds.push(sig.output()); - check_where_clauses(tcx, fcx, span, def_id, Some(sig.output())); + check_where_clauses(tcx, fcx, span, def_id, Some((sig.output(), hir_sig.decl.output.span()))); } /// Checks "defining uses" of opaque `impl Trait` types to ensure that they meet the restrictions diff --git a/src/test/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.stderr b/src/test/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.stderr index 8cc6f7c3037..08b26b8fc13 100644 --- a/src/test/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.stderr +++ b/src/test/ui/type-alias-impl-trait/generic_duplicate_lifetime_param.stderr @@ -1,8 +1,8 @@ error: non-defining opaque type use in defining scope - --> $DIR/generic_duplicate_lifetime_param.rs:7:4 + --> $DIR/generic_duplicate_lifetime_param.rs:7:26 | LL | fn one<'a>(t: &'a ()) -> Two<'a, 'a> { - | ^^^ + | ^^^^^^^^^^^ | note: lifetime used multiple times --> $DIR/generic_duplicate_lifetime_param.rs:5:10