rust/compiler/rustc_typeck
Yuki Okushi 3b780fc279
Rollup merge of #99079 - compiler-errors:issue-99073, r=oli-obk
Check that RPITs constrained by a recursive call in a closure are compatible

Fixes #99073

Adapts a similar visitor pattern to `find_opaque_ty_constraints` (that we use to check TAITs), but with some changes:
0. Only walk the "OnlyBody" children, instead of all items in the RPIT's defining scope
1. Only walk through the body's children if we found a constraining usage
2. Don't actually do any inference, just do a comparison and error if they're mismatched

----

r? `@oli-obk` -- you know all this impl-trait stuff best... is this the right approach? I can explain the underlying issue better if you'd like, in case that might reveal a better solution. Not sure if it's possible to gather up the closure's defining usages of the RPIT while borrowck'ing the outer function, that might be a better place to put this check...
2022-07-27 19:05:32 +09:00
..
src Rollup merge of #99079 - compiler-errors:issue-99073, r=oli-obk 2022-07-27 19:05:32 +09:00
Cargo.toml Update smallvec to 1.8.1. 2022-06-27 08:48:55 +10:00
README.md

For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.