Point at return type obligations instead of at fn ident

This commit is contained in:
Esteban Küber 2020-01-29 14:16:31 -08:00
parent 972ae5afe5
commit 8d48597b76
2 changed files with 5 additions and 5 deletions

View file

@ -530,7 +530,7 @@ fn check_where_clauses<'tcx, 'fcx>(
fcx: &FnCtxt<'fcx, 'tcx>,
span: Span,
def_id: DefId,
return_ty: Option<Ty<'tcx>>,
return_ty: Option<(Ty<'tcx>, Span)>,
) {
debug!("check_where_clauses(def_id={:?}, return_ty={:?})", def_id, return_ty);
@ -664,7 +664,7 @@ fn check_where_clauses<'tcx, 'fcx>(
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

View file

@ -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