Add an EarlyBinder
type
#514
Labels
major-change
A proposal to make a major change to rustc
major-change-accepted
A major change proposal that was accepted
T-compiler
Add this label so rfcbot knows to poll the compiler team
Proposal
Chalk has no concept of Param (https://github.com/rust-lang/chalk/blob/e0ade19d139bc784384acc6736cd960c91dd55a1/chalk-ir/src/lib.rs#L579) or ReEarlyBound (https://github.com/rust-lang/chalk/blob/e0ade19d139bc784384acc6736cd960c91dd55a1/chalk-ir/src/lib.rs#L1308). Everything is just "bound" - the equivalent of rustc's late-bound. It's not completely clear yet whether to, in the long-term, move everything to the same type of binder in rustc or to add
Param
/ReEarlyBound
in Chalk.Either way, tracking when we have or haven't already substituted out these in rustc can be helpful.
This proposal is to add an
EarlyBinder
newtype à laBinder
. As withBinder
, the idea is that ty-related things withParam
/ReEarlyBound
inside will continue to be wrapped inEarlyBinder
until they are substituted out.There is a WIP implementation in rust-lang/rust#96883. As a first step, I'm just added an EarlyBinder newtype that is required to call subst. I also added a couple "transparent" bound_* wrappers around a couple queries that are often immediately substituted. Future PRs can be relatively small and self-contained, incrementally "pushing"
EarlyBinder
wrapping up.Mentors or Reviewers
I should be able to lead the work here. @oli-obk and @nikomatsakis might review, though changes should mostly be mechanical.
Process
The main points of the Major Change Process are as follows:
@rustbot second
.-C flag
, then full team check-off is required.@rfcbot fcp merge
on either the MCP or the PR.You can read more about Major Change Proposals on forge.
The text was updated successfully, but these errors were encountered: