-
Notifications
You must be signed in to change notification settings - Fork 13.7k
Do not use effective_visibilities query for Adt types of a local trait while proving a where-clause #145642
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
base: master
Are you sure you want to change the base?
Conversation
@@ -2878,7 +2878,7 @@ impl<'a, 'tcx> TypeErrCtxt<'a, 'tcx> { | |||
// we check if `TraitB` can be reachable from `S` | |||
// to determine whether to note `TraitA` is sealed trait. | |||
if let ty::Adt(adt, _) = ty.kind() { | |||
let visibilities = tcx.effective_visibilities(()); | |||
let visibilities = &tcx.resolutions(()).effective_visibilities; |
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.
okay 🤔 what does the effective_visibilities
query actually do with the effective_visibilities
computed by by nameres? I generally feel like it should have some more comments somewhere.
cc @petrochenkov maybe?
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.
I noticed that in versions prior to #143431, &tcx.resolutions(()).effective_visibilities
was used in this way. As for what exactly it does, I'm not quite sure. At the time, I used this API as suggested.🤔
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.
okay 🤔 what does the
effective_visibilities
query actually do with theeffective_visibilities
computed by by nameres?
Actually calculates them.
Name resolutions can only fill the "directly public" and "exported" levels, based on modules, reexports and nominal visibility.
The query uses type information and calculates the remaining "reachable" levels too.
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.
Here we are only checking Level::Reexported so it's ok to use the incomplete effective visibilities from name resolver.
@bors r+ rollup |
…t while proving a where-clause Signed-off-by: xizheyin <[email protected]>
Added some comments for the test, waiting for CI green...
|
@bors r=lcnr |
@xizheyin: 🔑 Insufficient privileges: Not in reviewers |
Unfortunately, bors did not recognize the delegate instruction. 🤔 |
oh fun @bors r+ rollup |
Do not use effective_visibilities query for Adt types of a local trait while proving a where-clause Partially fix rust-lang#145611, but we should do something make cycle in this situation ICE. Instead of using a query, call `&tcx.resolutions(()).effective_visibilities`. r? `@lcnr` cc `@compiler-errors`
Rollup of 12 pull requests Successful merges: - #143383 (stabilize `const_array_each_ref`) - #144443 (Make target pointer width in target json an integer) - #144758 ([Doc] Add links to the various collections) - #144915 (Defer tail call ret ty equality to check_tail_calls) - #145256 (Add new `--test-codegen-backend` bootstrap option) - #145415 (std_detect: RISC-V: implement implication to "C") - #145573 (Add an experimental unsafe(force_target_feature) attribute.) - #145642 (Do not use effective_visibilities query for Adt types of a local trait while proving a where-clause) - #145650 (Fix JS search scripts path) - #145654 (Download CI GCC into the correct directory) - #145662 (Enforce correct number of arguments for `"x86-interrupt"` functions) - #145674 (Enable triagebot `[review-changes-since]` feature) Failed merges: - #145647 (miri subtree update) r? `@ghost` `@rustbot` modify labels: rollup
Do not use effective_visibilities query for Adt types of a local trait while proving a where-clause Partially fix rust-lang#145611, but we should do something make cycle in this situation ICE. Instead of using a query, call `&tcx.resolutions(()).effective_visibilities`. r? ``@lcnr`` cc ``@compiler-errors``
Rollup of 14 pull requests Successful merges: - #143383 (stabilize `const_array_each_ref`) - #144443 (Make target pointer width in target json an integer) - #144758 ([Doc] Add links to the various collections) - #144915 (Defer tail call ret ty equality to check_tail_calls) - #145137 (Consolidate panicking functions in `slice/index.rs`) - #145256 (Add new `--test-codegen-backend` bootstrap option) - #145297 (fix(debuginfo): handle false positives in overflow check) - #145415 (std_detect: RISC-V: implement implication to "C") - #145642 (Do not use effective_visibilities query for Adt types of a local trait while proving a where-clause) - #145650 (Fix JS search scripts path) - #145654 (Download CI GCC into the correct directory) - #145662 (Enforce correct number of arguments for `"x86-interrupt"` functions) - #145674 (Enable triagebot `[review-changes-since]` feature) - #145678 (Fix typo in docstring) r? `@ghost` `@rustbot` modify labels: rollup
Do not use effective_visibilities query for Adt types of a local trait while proving a where-clause Partially fix rust-lang#145611, but we should do something make cycle in this situation ICE. Instead of using a query, call `&tcx.resolutions(()).effective_visibilities`. r? ```@lcnr``` cc ```@compiler-errors```
Partially fix #145611, but we should do something make cycle in this situation ICE.
Instead of using a query, call
&tcx.resolutions(()).effective_visibilities
.r? @lcnr
cc @compiler-errors