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);
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));
}
// 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
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