Properly support LUB for ReErased #102943
Closed
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
This is needed to properly check obligations on opaque types, since instead of returning ReEmpty, we now return ReErased for unconstrained regions in MIR borrowck.
This shouldn't be unsafe for now, but it does kinda risk future bugs if we accidentally allow
ReEmpty
to leak into other inference contexts, since LUB would cause an ICE that is very obvious to see otherwise. I'm not really certain how to fix this other than reintroducing aReRootEmpty
region for opaque type inference that properly represents an unconstrained opaque lifetime..cc @oli-obk and @jackh726
not sure which of y'all to request review from, so I flipped a coin and it landed on heads. therefore r? @oli-obk, feel free to reassign though.
Fixes #102649
Fixes #102510
Originally caused by #98559