rust/compiler/rustc_borrowck
Matthias Krüger 9fd0972677
Rollup merge of #133798 - lcnr:nested-bodies-opaques, r=compiler-errors
stop replacing bivariant args with `'static` when computing closure requirements

It is unnecessary, these get constrained when checking that the opaque type is well-formed.

It also results in the opaque type no longer being well formed. If you've got `fn foo<'a>() -> impl Sized + 'a` the opaque is `type Opaque<'a, 'aDummy> where 'a: 'aDummy, 'aDummy: 'a` where `'aDummy`  is bivariant. If we call `foo::<'b>()`  inside of a closure and its return type ends up in a type test, we start out with the WF `Opaque<'b, 'b>`, and then replace the bivariant `'b` with `'static`. `Opaque<'b, 'static>` is no longer well-formed. Given how these type tests are used, I don't think this caused any practical issues.

r? types
2024-12-04 05:42:08 +01:00
..
src Rollup merge of #133798 - lcnr:nested-bodies-opaques, r=compiler-errors 2024-12-04 05:42:08 +01:00
Cargo.toml compiler: Replace rustc_target with _abi in _borrowck 2024-11-02 20:31:47 -07:00
messages.ftl Begin experimental support for pin reborrowing 2024-09-18 12:36:31 -07:00