Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't ICE when hitting overflow limit in fulfillment loop in next solver #121322

Merged
merged 1 commit into from
Feb 21, 2024

Conversation

compiler-errors
Copy link
Member

@compiler-errors compiler-errors commented Feb 20, 2024

As the title says, let's not ICE when hitting the overflow limit in fulfill. On the other hand, we don't want to treat these as true errors, since it means that whether something is considered a true error or an ambiguity is dependent on overflow handling in the solver, which seems not worth it.

Now that we use the presence of true errors in fulfillment for implicit negative coherence, we especially don't want to tie together coherence and overflow.

I guess I could also drain these errors out of fulfillment and put them into some ambiguities storage so we could return them in select_all_or_error without having to re-process them every time we call select_where_possible. Let me know if that's desired.

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 labels Feb 20, 2024
@rustbot
Copy link
Collaborator

rustbot commented Feb 20, 2024

Some changes occurred to the core trait solver

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

@lcnr
Copy link
Contributor

lcnr commented Feb 20, 2024

good enough for now

@bors r+ rollup (new solver)

@bors
Copy link
Contributor

bors commented Feb 20, 2024

📌 Commit 994d551 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 Feb 20, 2024
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 20, 2024
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#119203 (Correct the simd_masked_{load,store} intrinsic docs)
 - rust-lang#121277 (Refactor trait implementations in `core::convert::num`.)
 - rust-lang#121322 (Don't ICE when hitting overflow limit in fulfillment loop in next solver)
 - rust-lang#121323 (Don't use raw parameter types in `find_builder_fn`)
 - rust-lang#121344 (Expand weak alias types before collecting constrained/referenced late bound regions + refactorings)
 - rust-lang#121350 (Fix stray trait mismatch in `resolve_associated_item` for `AsyncFn`)
 - rust-lang#121352 (docs: add missing "the" to `str::strip_prefix` doc)

Failed merges:

 - rust-lang#121340 (bootstrap: apply most of clippy's suggestions)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit d43fd29 into rust-lang:master Feb 21, 2024
11 checks passed
@rustbot rustbot added this to the 1.78.0 milestone Feb 21, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 21, 2024
Rollup merge of rust-lang#121322 - compiler-errors:next-solver-fulfillment-ice, r=lcnr

Don't ICE when hitting overflow limit in fulfillment loop in next solver

As the title says, let's not ICE when hitting the overflow limit in fulfill. On the other hand, we don't want to treat these as true errors, since it means that whether something is considered a true error or an ambiguity is dependent on overflow handling in the solver, which seems not worth it.

Now that we use the presence of true errors in fulfillment for implicit negative coherence, we especially don't want to tie together coherence and overflow.

I guess I could also drain these errors out of fulfillment and put them into some `ambiguities` storage so we could return them in `select_all_or_error` without having to re-process them every time we call `select_where_possible`. Let me know if that's desired.

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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants