Skip to content

consider item bounds for non-yet-defined opaque types#146329

Merged
bors merged 2 commits intorust-lang:masterfrom
lcnr:opaque-type-infer-alias-candidates
Sep 12, 2025
Merged

consider item bounds for non-yet-defined opaque types#146329
bors merged 2 commits intorust-lang:masterfrom
lcnr:opaque-type-infer-alias-candidates

Conversation

@lcnr
Copy link
Contributor

@lcnr lcnr commented Sep 8, 2025

Based on #140405.

fixes rust-lang/trait-system-refactor-initiative#182
fixes rust-lang/trait-system-refactor-initiative#196
fixes rust-lang/trait-system-refactor-initiative#205

there's some jank here, see rust-lang/trait-system-refactor-initiative#229

Design

If the self type is an inference variable which has been sub-unified with am opaque type, we need to incompletely guide inference to avoid breakage.

In this case, we

  • look at the item bounds of all sub-unified opaque types, and
  • blanket impls which do not constrain the self type

Even if there are applicable candidates, we always force their certainty to be Maybe, so they will always have to be reproven once we've constrained the inference variable.

This is a bit iffy, see the added tests.

r? @BoxyUwU

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

9 participants