Files
rust/tests/ui
Matthias Krüger ca7e27a71c Rollup merge of #113182 - compiler-errors:rpit-stricter-captures, r=oli-obk
Error when RPITITs' hidden types capture more lifetimes than their trait definitions

This implements a stricter set of captures rules for RPITITs. They now may only capture:
1. Lifetimes from the impl header (both the self type and any trait substs -- we may want to restrict just to the self type's lifetimes, but the PR makes that easy to do, too)
2. Lifetimes mentioned by the `impl Trait` in the trait method's definition.

Namely, they may not mention lifetimes from the method (early or late) that are not mentioned in the `impl Trait`.

cc #105258 which I think was trying to do this too, though I'm not super familiar with what exactly differs from that or why that one was broken.
cc #112194 (doesn't fix this issue per se, because it's still an open question, but I think this is objectively better than the status quo, and gets us closer to resolving that issue.)

Technically is a fix for the ICE in #108580, but it turns that issue into an error now. We can decide separately whether or not nested RPITITs should capture lifetimes from their parents.

r? ``@oli-obk``
2023-07-01 13:46:01 +02:00
..
2023-04-30 00:06:26 +08:00
2023-01-30 20:12:19 +00:00
2023-01-15 19:46:20 +00:00
2023-06-19 15:39:55 +02:00
2023-05-24 19:35:59 -03:00
2023-05-30 12:40:35 +02:00
2023-05-30 13:03:40 +02:00
2023-04-03 09:24:11 +02:00
2023-05-08 17:58:01 -03:00
2023-05-26 06:55:06 +10:00
2023-05-04 18:06:07 +00:00
2023-05-11 12:14:57 -07:00
2023-05-08 17:58:01 -03:00
2023-06-23 16:26:22 +00:00
2023-01-30 20:12:19 +00:00
2023-06-19 20:00:41 +00:00
2023-06-10 14:46:11 -04:00
2023-05-25 17:40:46 +00:00
2023-06-28 07:59:36 -04:00
2023-02-16 11:42:35 -03:00
2023-05-08 03:36:30 +00:00
2023-05-12 00:10:52 +00:00
2023-04-29 13:01:46 +01:00
2023-06-28 01:51:53 -04:00
2023-06-29 16:24:07 +03:00
2023-06-26 08:56:32 +00:00
2023-04-03 09:24:11 +02:00
2023-05-05 14:58:52 -07:00
2023-06-24 21:49:38 -04:00
2023-06-06 18:43:20 +00:00
2023-04-19 19:13:45 +00:00
2023-04-13 22:10:26 -05:00
2023-06-20 19:46:01 -04:00
2023-05-08 03:36:30 +00:00
2023-05-29 12:07:41 -03:00
2023-03-29 18:04:44 -04:00
2023-05-26 18:55:02 +01:00
2023-04-26 21:02:56 +02:00
2023-06-12 20:24:48 +08:00
2023-06-26 08:56:32 +00:00
2023-05-01 16:15:17 +08:00
2023-04-29 13:01:46 +01:00
2023-06-22 23:01:48 +02:00
2023-05-12 00:10:52 +00:00
2023-05-24 19:35:59 -03:00
2023-01-15 19:46:20 +00:00
2023-01-15 19:46:20 +00:00
2023-03-08 00:00:18 +00:00
2023-04-13 22:10:26 -05:00
2023-04-13 22:10:26 -05:00
2023-03-08 00:00:18 +00:00
2023-03-08 00:00:18 +00:00
2023-01-15 19:46:20 +00:00