Skip to content

Conversation

compiler-errors
Copy link
Member

Follow-up to #118725, which subtly broke closure signature inference on combinators like Result::map which I noticed in syn.

Essentially, instead of using eq which will eagerly infer ?1 := <?2 as Trait>::Assoc, we can directly emit an alias-relate goal, which will stay ambiguous for as long as ?2 is ambiguous.

This also more closely models the conceptual framing that projects-to acts like an alias-relate when solving, and like a normalizes-to when in a param env.

r? lcnr

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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) labels Dec 13, 2023
@rustbot
Copy link
Collaborator

rustbot commented Dec 13, 2023

Some changes occurred to the core trait solver

cc @rust-lang/initiative-trait-system-refactor

@lcnr
Copy link
Contributor

lcnr commented Dec 14, 2023

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented Dec 14, 2023

📌 Commit d33eb34 has been approved by lcnr

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Dec 14, 2023
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Dec 14, 2023
…, r=lcnr

Unconditionally register alias-relate in projection goal

Follow-up to rust-lang#118725, which subtly broke closure signature inference on combinators like `Result::map` which I noticed in syn.

Essentially, instead of using `eq` which will eagerly infer `?1 := <?2 as Trait>::Assoc`, we can directly emit an alias-relate goal, which will stay ambiguous for as long as `?2` is ambiguous.

This also more closely models the conceptual framing that projects-to acts like an alias-relate when solving, and like a normalizes-to when in a param env.

r? lcnr
bors added a commit to rust-lang-ci/rust that referenced this pull request Dec 14, 2023
…llaumeGomez

Rollup of 4 pull requests

Successful merges:

 - rust-lang#118770 (Fix cases where std accidentally relied on inline(never))
 - rust-lang#118910 ([rustdoc] Use Map instead of Object for source files and search index)
 - rust-lang#118914 (Unconditionally register alias-relate in projection goal)
 - rust-lang#118935 (interpret: extend comment on the inhabitedness check in downcast)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors
Copy link
Collaborator

bors commented Dec 14, 2023

☔ The latest upstream changes (presumably #118937) made this pull request unmergeable. Please resolve the merge conflicts.

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Dec 14, 2023
@rust-cloud-vms rust-cloud-vms bot force-pushed the eager-alias-relate branch 2 times, most recently from d04ecdf to 929d632 Compare December 14, 2023 18:41
@compiler-errors
Copy link
Member Author

@bors r=lcnr

@bors
Copy link
Collaborator

bors commented Dec 14, 2023

📌 Commit 929d632 has been approved by lcnr

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Dec 14, 2023
bors added a commit to rust-lang-ci/rust that referenced this pull request Dec 14, 2023
…iaskrgr

Rollup of 4 pull requests

Successful merges:

 - rust-lang#118910 ([rustdoc] Use Map instead of Object for source files and search index)
 - rust-lang#118914 (Unconditionally register alias-relate in projection goal)
 - rust-lang#118935 (interpret: extend comment on the inhabitedness check in downcast)
 - rust-lang#118945 (rustc_codegen_ssa: Remove trailing spaces in Display impl for CguReuse)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit accaea2 into rust-lang:master Dec 14, 2023
@rustbot rustbot added this to the 1.76.0 milestone Dec 14, 2023
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Dec 14, 2023
Rollup merge of rust-lang#118914 - compiler-errors:eager-alias-relate, r=lcnr

Unconditionally register alias-relate in projection goal

Follow-up to rust-lang#118725, which subtly broke closure signature inference on combinators like `Result::map` which I noticed in syn.

Essentially, instead of using `eq` which will eagerly infer `?1 := <?2 as Trait>::Assoc`, we can directly emit an alias-relate goal, which will stay ambiguous for as long as `?2` is ambiguous.

This also more closely models the conceptual framing that projects-to acts like an alias-relate when solving, and like a normalizes-to when in a param env.

r? lcnr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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
Development

Successfully merging this pull request may close these issues.

4 participants