Skip to content

Commit e087871

Browse files
committed
Make the GATS self outlives error take into GATs in the inputs
1 parent f03ce30 commit e087871

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

compiler/rustc_typeck/src/check/wfcheck.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ fn check_gat_where_clauses(tcx: TyCtxt<'_>, associated_items: &[hir::TraitItemRe
383383
tcx,
384384
param_env,
385385
item_hir_id,
386-
sig.output(),
386+
sig.inputs_and_output,
387387
// We also assume that all of the function signature's parameter types
388388
// are well formed.
389389
&sig.inputs().iter().copied().collect(),

src/test/ui/generic-associated-types/self-outlives-lint.rs

+13
Original file line numberDiff line numberDiff line change
@@ -210,4 +210,17 @@ trait StaticReturnAndTakes<'a> {
210210
fn bar<'b>(&self, arg: Self::Y<'b>);
211211
}
212212

213+
// We require bounds when the GAT appears in the inputs
214+
trait Input {
215+
type Item<'a>;
216+
//~^ missing required
217+
fn takes_item<'a>(&'a self, item: Self::Item<'a>);
218+
}
219+
220+
// We don't require bounds when the GAT appears in the where clauses
221+
trait WhereClause {
222+
type Item<'a>;
223+
fn takes_item<'a>(&'a self) where Self::Item<'a>: ;
224+
}
225+
213226
fn main() {}

src/test/ui/generic-associated-types/self-outlives-lint.stderr

+12-1
Original file line numberDiff line numberDiff line change
@@ -163,5 +163,16 @@ LL | type Fut<'out>;
163163
= note: this bound is currently required to ensure that impls have maximum flexibility
164164
= note: we are soliciting feedback, see issue #87479 <https://github.com/rust-lang/rust/issues/87479> for more information
165165

166-
error: aborting due to 15 previous errors
166+
error: missing required bound on `Item`
167+
--> $DIR/self-outlives-lint.rs:215:5
168+
|
169+
LL | type Item<'a>;
170+
| ^^^^^^^^^^^^^-
171+
| |
172+
| help: add the required where clause: `where Self: 'a`
173+
|
174+
= note: this bound is currently required to ensure that impls have maximum flexibility
175+
= note: we are soliciting feedback, see issue #87479 <https://github.com/rust-lang/rust/issues/87479> for more information
176+
177+
error: aborting due to 16 previous errors
167178

0 commit comments

Comments
 (0)