Files
rust/tests/ui
Michael Goulet 6388c0ef04 Rollup merge of #118000 - compiler-errors:placeholder-ty-outlives, r=aliemjay
Make regionck care about placeholders in outlives components

Currently, we don't consider a placeholder type `!T` to be a type component when it comes to processing type-outlives obligations. This means that they are essentially treated like unit values with no sub-components, and always outlive any region. This is problematic for `non_lifetime_binders`, and even more problematic for `with_negative_coherence`, since negative coherence uses placeholders as universals.

This PR adds `Component::Placeholder` which acts much like `Component::Param`. This currently causes a regression in some non-lifetime-binders tests because `for<T> T: 'static` doesn't imply itself when processing outlives obligations, so code like this will fail:

```
fn foo() where for<T> T: 'static {
  foo() //~ fails
}
```

Since the where clause doesn't imply itself. This requires making the `MatchAgainstHigherRankedOutlives` relation smarter when it comes to binders.

r? types
2023-11-19 19:14:35 -08:00
..
2023-10-17 17:33:55 +00:00
2023-10-30 22:19:17 +00:00
2023-10-28 23:11:03 -07:00
2023-11-13 16:25:16 -08:00
2023-10-08 10:06:17 +00:00
2023-10-28 23:11:03 -07:00
2023-10-04 08:01:11 +08:00
2023-10-08 10:06:17 +00:00
2023-05-30 13:03:40 +02:00
2023-10-04 08:01:11 +08:00
2023-11-16 17:00:23 +00:00
2023-11-09 10:40:55 -05:00
2023-07-17 22:06:32 +00:00
2023-10-20 21:14:01 +00:00
2023-09-06 12:09:29 +03:00
2023-11-02 18:16:37 +01:00
2023-11-16 17:00:23 +00:00
2023-11-16 17:00:23 +00:00
2023-10-20 21:14:01 +00:00
2023-10-28 23:11:03 -07:00
2023-10-08 10:06:17 +00:00
2023-08-28 17:47:37 -03:00
2023-11-14 13:41:28 +00:00
2023-10-20 21:14:01 +00:00
2023-04-29 13:01:46 +01:00
2023-07-29 11:47:26 +02:00
2023-10-11 04:55:55 +02:00
2023-10-20 21:14:01 +00:00
2023-10-28 23:11:03 -07:00
2023-11-07 05:23:09 +00:00
2023-08-14 16:57:51 -07:00
2023-10-02 23:14:29 +00:00
2023-09-18 17:29:13 +01:00
2023-10-20 21:14:01 +00:00
2023-11-16 17:00:23 +00:00
2023-11-16 17:00:23 +00:00
2023-04-29 13:01:46 +01:00
2023-10-05 01:04:41 +00:00
2023-09-10 23:06:14 +02:00
2023-09-10 23:06:14 +02:00
2023-10-20 21:14:01 +00:00