-
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
privacy: no nominal visibility for assoc fns #114099
privacy: no nominal visibility for assoc fns #114099
Conversation
r? @fee1-dead (rustbot has picked a reviewer for you, use r? to override) |
I'd like too look in more detail why the invariant is broken in this scenario, maybe it can affect non-erroneous cases too. |
Minimized reproduction: #![feature(staged_api)]
pub trait Trait {
fn fun() {}
}
impl Trait for u8 {
pub(self) fn fun() {}
}
fn main() {}
That shouldn't be the case, from what I remember the |
6860108
to
422cae7
Compare
span_bug!
-> delay_span_bug
When `staged_api` is enabled, effective visibilities are computed earlier and this can trigger an ICE in some cases. In particular, if a impl of a trait method has a visibility then an error will be reported for that, but when privacy invariants are being checked, the effective visibility will still be greater than the nominal visbility and that will trigger a `span_bug!`. However, this invariant - that effective visibilites are limited to nominal visibility - doesn't make sense for associated functions. Signed-off-by: David Wood <david@davidtw.co>
422cae7
to
e051a32
Compare
@bors r+ rollup |
…iaskrgr Rollup of 7 pull requests Successful merges: - rust-lang#114099 (privacy: no nominal visibility for assoc fns ) - rust-lang#114128 (When flushing delayed span bugs, write to the ICE dump file even if it doesn't exist) - rust-lang#114138 (Adjust spans correctly for fn -> method suggestion) - rust-lang#114146 (Skip reporting item name when checking RPITIT GAT's associated type bounds hold) - rust-lang#114147 (Insert RPITITs that were shadowed by missing ADTs that resolve to [type error]) - rust-lang#114155 (Replace a lazy `RefCell<Option<T>>` with `OnceCell<T>`) - rust-lang#114164 (Add regression test for `--cap-lints allow` and trait bounds warning) r? `@ghost` `@rustbot` modify labels: rollup
Fixes #113860.
When
staged_api
is enabled, effective visibilities are computed earlier and this can trigger an ICE in some cases.In particular, if a impl of a trait method has a visibility then an error will be reported for that, but when privacy invariants are being checked, the effective visibility will still be greater than the nominal visbility and that will trigger a
span_bug!
.However, this invariant - that effective visibilites are limited to nominal visibility - doesn't make sense for associated functions.