Repository navigation
trait solver: Resolve region vars before eager placeholder handling - #164103
Open
Dnreikronos wants to merge 2 commits into
Open
Dnreikronos wants to merge 2 commits into
Dnreikronos wants to merge 2 commits into
Conversation
Collaborator
|
The parser was modified, potentially altering the grammar of (stable) Rust cc @fmease |
Collaborator
|
r? @davidtwco rustbot has assigned @davidtwco. Use Why was this reviewer chosen?The reviewer was selected based on:
|
Contributor
Author
|
r? @BoxyUwU |
Collaborator
|
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Region vars can already have known values in the unification table while the stored constraint still contains the vars.
max_universelooks through the table, butPlaceholderReplacersees the stored terms. In Boxy's nested binder case, that leaves an alias constraint ambiguous even after equating its regions.I used
deeply_resolve_via_unification_tableat the start of eager handling for each universe. That leaves only the current universe's placeholder to bind and lets the result match the actual assumption on the outer binder. Unknown vars stay unknown.The test DSL needed a small equality operation,
'a2 = 'a, to reach this state. The paired outlives constraints in the original example go straight into solver storage and don't populate the table on current main. I kept that example as an ambiguity control and added the version with real table equalities, plus a chained-var case. Both adjusted cases fail when the resolution call is removed and pass with it.I think keeping this separate makes #157984 easier to review. The broader equality and subtyping work stays there.