-
Notifications
You must be signed in to change notification settings - Fork 13k
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
Delay a bug when encountering an impl with unconstrained generics in codegen_select
#133368
Delay a bug when encountering an impl with unconstrained generics in codegen_select
#133368
Conversation
r? @wesleywiser rustbot has assigned @wesleywiser. Use |
// for this and will in fact ICE in stable hashing of the return value. So bail out instead. | ||
infcx.tcx.dcx().has_errors().unwrap(); | ||
let impl_source = tcx.erase_regions(impl_source); | ||
if impl_source.has_non_region_infer() { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is a drive by to make it clear what it's looking for. no functional change.
…llaumeGomez Rollup of 12 pull requests Successful merges: - rust-lang#129409 (Expand std::os::unix::fs::chown() doc with a warning) - rust-lang#133320 (Add release notes for Rust 1.83.0) - rust-lang#133368 (Delay a bug when encountering an impl with unconstrained generics in `codegen_select`) - rust-lang#133428 (Actually use placeholder regions for trait method late bound regions in `collect_return_position_impl_trait_in_trait_tys`) - rust-lang#133512 (Add `as_array` and `as_mut_array` conversion methods to slices.) - rust-lang#133519 (Check `xform_ret_ty` for WF in the new solver to improve method winnowing) - rust-lang#133520 (Structurally resolve before applying projection in borrowck) - rust-lang#133534 (extend group-forbid-always-trumps-cli test) - rust-lang#133537 ([rustdoc] Fix new clippy lints) - rust-lang#133543 ([AIX] create shim for lgammaf_r) - rust-lang#133547 (rustc_span: Replace a `HashMap<_, ()>` with `HashSet`) - rust-lang#133550 (print generated doc paths) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#133368 - compiler-errors:codegen-select-unconstrained-params, r=lcnr Delay a bug when encountering an impl with unconstrained generics in `codegen_select` Despite its name, `codegen_select` is what powers `Instance::try_resolve`, which is used in pre-codegen contexts to try to resolve a method where possible. One place that it's used is in the "recursion MIR lint" that detects recursive MIR bodies. If we encounter an impl in `codegen_select` that contains unconstrained generic parameters, we expect that impl to caused an error to be reported; however, there's no temporal guarantee that this error is reported *before* we call `codegen_select`. This is what a delayed bug is *for*, and this PR makes us use a delayed bug rather than asserting something about errors already having been emitted. Fixes rust-lang#126646
Despite its name,
codegen_select
is what powersInstance::try_resolve
, which is used in pre-codegen contexts to try to resolve a method where possible. One place that it's used is in the "recursion MIR lint" that detects recursive MIR bodies.If we encounter an impl in
codegen_select
that contains unconstrained generic parameters, we expect that impl to caused an error to be reported; however, there's no temporal guarantee that this error is reported before we callcodegen_select
. This is what a delayed bug is for, and this PR makes us use a delayed bug rather than asserting something about errors already having been emitted.Fixes #126646