Make the GATS self outlives error take into GATs in the inputs
This commit is contained in:
parent
f03ce30962
commit
e087871915
@ -383,7 +383,7 @@ fn check_gat_where_clauses(tcx: TyCtxt<'_>, associated_items: &[hir::TraitItemRe
|
||||
tcx,
|
||||
param_env,
|
||||
item_hir_id,
|
||||
sig.output(),
|
||||
sig.inputs_and_output,
|
||||
// We also assume that all of the function signature's parameter types
|
||||
// are well formed.
|
||||
&sig.inputs().iter().copied().collect(),
|
||||
|
@ -210,4 +210,17 @@ trait StaticReturnAndTakes<'a> {
|
||||
fn bar<'b>(&self, arg: Self::Y<'b>);
|
||||
}
|
||||
|
||||
// We require bounds when the GAT appears in the inputs
|
||||
trait Input {
|
||||
type Item<'a>;
|
||||
//~^ missing required
|
||||
fn takes_item<'a>(&'a self, item: Self::Item<'a>);
|
||||
}
|
||||
|
||||
// We don't require bounds when the GAT appears in the where clauses
|
||||
trait WhereClause {
|
||||
type Item<'a>;
|
||||
fn takes_item<'a>(&'a self) where Self::Item<'a>: ;
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
@ -163,5 +163,16 @@ LL | type Fut<'out>;
|
||||
= note: this bound is currently required to ensure that impls have maximum flexibility
|
||||
= note: we are soliciting feedback, see issue #87479 <https://github.com/rust-lang/rust/issues/87479> for more information
|
||||
|
||||
error: aborting due to 15 previous errors
|
||||
error: missing required bound on `Item`
|
||||
--> $DIR/self-outlives-lint.rs:215:5
|
||||
|
|
||||
LL | type Item<'a>;
|
||||
| ^^^^^^^^^^^^^-
|
||||
| |
|
||||
| help: add the required where clause: `where Self: 'a`
|
||||
|
|
||||
= note: this bound is currently required to ensure that impls have maximum flexibility
|
||||
= note: we are soliciting feedback, see issue #87479 <https://github.com/rust-lang/rust/issues/87479> for more information
|
||||
|
||||
error: aborting due to 16 previous errors
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user